Получить документ IFrame из JavaScript в основном документе
У меня есть этот код HTML:
<html>
<head>
<script type="text/javascript">
function GetDoc(x)
{
return x.document ||
x.contentDocument ||
x.contentWindow.document;
}
function DoStuff()
{
var fr = document.all["myframe"];
while(fr.ariaBusy) { }
var doc = GetDoc(fr);
if (doc == document)
alert("Bad");
else
alert("Good");
}
</script>
</head>
<body>
<iframe id="myframe" src="http://example.com" width="100%" height="100%" onload="DoStuff()"></iframe>
</body>
</html>
Проблема в том, что я получаю сообщение "Плохо". Это означает, что документ iframe не получен правильно, и то, что действительно возвращается функцией GetDoc, является родительским документом.
Я был бы признателен, если бы вы сказали, где я делаю свою ошибку. (Я хочу получить документ, размещенный в IFrame.)
Спасибо.
Ответы
Ответ 1
Вы должны иметь доступ к документу в IFRAME, используя следующий код:
document.getElementById('myframe').contentWindow.document
Однако вы не сможете это сделать, если страница в кадре загружается из другого домена (например, google.com). Это из-за браузера Одинаковая политика происхождения.
Ответ 2
Проблема заключается в том, что в IE (который, как я полагаю, вы тестируете) элемент <iframe>
имеет свойство document
, которое ссылается на документ, содержащий iframe, и это используется до contentDocument
или contentWindow.document
. Что вам нужно:
function GetDoc(x) {
return x.contentDocument || x.contentWindow.document;
}
Кроме того, document.all
недоступен во всех браузерах и не является стандартным. Вместо этого используйте document.getElementById()
.