Подтвердить что ты не робот

Ошибка getElementById.contentDocument в IE

<html>
   <script type="text/javascript">
      function func() {
         alert(document.getElementById('iView').contentDocument);
      }    
   </script>
   <body>
      <iframe id="iView" style="width:200px;height:200px;"></iframe>
      <a href="#" onclick="func();">click</a>
   </body>
</html>

После щелчка Firefox возвращает [object HTMLDocument]. Internet Explorer возвращает undefined.

Как я могу выбрать элемент iView в Internet Explorer? Спасибо.

4b9b3361

Ответ 1

От эта страница:

Mozilla поддерживает стандарт W3C для доступа к объекту документа iframe через IFrameElm.contentDocument, в то время как Internet Explorer требует получить к нему доступ через document.frames [ "name" ], а затем получить доступ к результирующему документу.

Итак, вам нужно обнаружить браузер и в IE сделать что-то вроде этого:

document.frames['iView'].document; 

Ответ 2

Кросс-браузерный эквивалент contentDocument (включая сам Firefox, где contentDocument работает) contentWindow.document.

Итак, попробуйте:

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

contentWindow получает ссылку на объект iframe window, и, конечно, .document - это только объект документа DOM для iframe.

Вот статья, которая лучше всего отражает.

Ответ 3

Кажется, вы хотите правильно получить содержимое iframe?

IE7 и FF2:

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

Ответ 4

Использование функции обнаружения, поскольку contentDocument поддерживается в 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 document object
} else {
    // this browser doesn't seem to support the iframe document object
}

Ответ 5

contentWindow.document.body.innerHTML

работает для меня в Internet Explorer и Firefox, тогда как

contentDocument.body.innerHTML

будет работать только в Firefox.

Ответ 6

Сделайте что-то вроде этого:

var myFrame = document.getElementById('iView');
var frameDoc = myFrame.contentDocument || myFrame.contentWindow;

if (frameDoc.document){
  frameDoc = frameDoc.document;
}

alert(frameDoc);

Подробнее см. эту страницу