Erro getElementById.contentDocument no IE

  function func() { alert(document.getElementById('iView').contentDocument); }    click   

Após clicar, o Firefox retorna [object HTMLDocument]. O Internet Explorer retorna indefinido.

Como posso selecionar o elemento iView com o Internet Explorer? Obrigado.

Desta página :

O Mozilla suporta o padrão W3C de acessar o object de documento do iframe por meio do IFrameElm.contentDocument, enquanto o Internet Explorer requer que você o acesse através do document.frames [“name”] e, em seguida, acesse o documento resultante.

Então você precisa detectar o navegador e no IE fazer algo assim:

 document.frames['iView'].document; 

O navegador cruzado equivalente a contentDocument (incluindo o próprio Firefox, onde contentDocument funciona) é contentWindow.document .

Então tente:

 alert(document.getElementById('iView').contentWindow.document); 

contentWindow obtém uma referência ao object da window do iframe e, é claro, o .document é apenas o object DOM Document para o iframe.

Aqui está um artigo que resume melhor .

Você parece querer ter o conteúdo do iframe certo?

IE7 e FF2:

 var iframe = document.getElementById('iView'); alert(iframe.contentWindow.document.body.innerHTML); 

Use a detecção de resources, pois o contentDocument é suportado no IE 8:

 var iframe = document.getElementById("iView"); var iframeDocument = null; if (iframe.contentDocument) { iframeDocument = iframe.contentDocument; } else if (iframe.contentWindow) { // for IE 5.5, 6 and 7: iframeDocument = iframe.contentWindow.document; } if (!!iframeDocument) { // do things with the iframe's document object } else { // this browser doesn't seem to support the iframe document object } 
 contentWindow.document.body.innerHTML 

está trabalhando para mim no Internet Explorer e no Firefox, enquanto

 contentDocument.body.innerHTML 

só funcionará no Firefox.

Faça algo assim:

 var myFrame = document.getElementById('iView'); var frameDoc = myFrame.contentDocument || myFrame.contentWindow; if (frameDoc.document){ frameDoc = frameDoc.document; } alert(frameDoc); 

Veja esta página para mais detalhes

    Intereting Posts