Acionando botões em iframe contido

votos
0

Eu tenho um HTML + javascript página que incorpora uma página em um iframe. Eu gostaria de ser capaz de desencadear um botão de envio (que provoca um POST) dentro da página embutido usando javascript na página de inclusão. Existe uma biblioteca já está fazendo isso?

Publicado 19/05/2009 em 18:20
fonte usuário
Em outras línguas...                            


2 respostas

votos
7

Se os IFRAMEanfitriões de uma página no mesmo domínio, você pode dizer

// To trigger from the enclosing page
var yourFrame = document.getElementById("iframeId");
if(yourFrame.contentDocument) {    
   yourFrame.contentDocument.getElementById("formId").submit(); // FF, etc
} else {
   yourFrame.contentWindow.document.getElementById("formId").submit(); // IE
}

// To trigger from the enclosed page
document.getElementById("formId").submit();

... onde iframeIdé o ID do iframe, e formIdé o ID do formulário dentro do iframe, algo como

Dentro do documento:

<iframe id="iframeId" src="/somePage.html" ... >

Dentro do documento em " somePage.html":

<form id="formId" method="post" action="...">

Note que se o IFRAMEestá hospedando uma página em outro domínio, então se você tentar enviar a partir da página de inclusão, você provavelmente irá obter algum tipo de "acesso negado" erro. Esta é uma precaução de segurança tomadas pelo navegador para impedir scripting malicioso (por exemplo, para evitar coisas como enviar automaticamente um formulário em nome de um usuário)

Respondeu 19/05/2009 em 18:24
fonte usuário

votos
1

As iframenecessidades para ser no mesmo domínio, caso contrário, você está SOL.

Para acessar os elementos do quadro, você precisa se comportar de forma diferente em diferentes navegadores.

Primeiro, pegue a moldura:

  • document.getElementById sempre funciona.
  • window.frames[ frameName ] deve estar bem também, mas usar o primeiro

Em seguida, obter o documento (aqui é onde fica complicado):

var doc = yourFrame.contentDocument ? yourFrame.contentDocument : yourFrame.contentWindow.document

Navegadores normas requerem o uso de contentDocument; IE (pelo menos antes 8) usa contentWindow.documentpara obter o documento.

Finalmente, você pode pegar o formulário e enviá-lo.

doc.getElementById('yourForm').submit()
Respondeu 19/05/2009 em 18:35
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more