Ошибка 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? Спасибо.
Ответы
Ответ 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);
Подробнее см. эту страницу