私はこの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でホストしたいです。)
ありがとうございました。
次のコードを使用して、IFRAMEのドキュメントにアクセスできるはずです。
document.getElementById('myframe').contentWindow.document
ただし、フレーム内のページが別のドメイン(google.comなど)から読み込まれている場合、これを行うことはできません。これは、ブラウザの Same Origin Policy が原因です。
問題は、IE(これはあなたがテストしていると推測されるものです)、_<iframe>
_要素にdocument
プロパティがあり、 iframe、これはcontentDocument
または_contentWindow.document
_プロパティの前に使用されるようになりました。
_function GetDoc(x) {
return x.contentDocument || x.contentWindow.document;
}
_
また、_document.all
_はすべてのブラウザで使用できるわけではなく、非標準です。代わりにdocument.getElementById()
を使用してください。