HTMLにiframeがあり、完全にロードされたときに通知する必要があります。私は、このテストケースを持っている:iframeのイベントハンドラが呼び出されずにロードされる
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Test</title>
<script language="javascript" type="text/javascript">
function addListener(el, type, func, capture) {
if (el.addEventListener){
el.addEventListener(type, func, capture);
} else if (el.attachEvent){
el.attachEvent('on'+type, func);
}
}
function addhandlers(frame) {
addListener(frame, "load", function(e) { onDomLoaded(e); }, true);
}
function onDomLoaded(e) {
alert("loaded");
}
</script>
</head>
<body>
<form action="#">
<input type="button" value="Add handlers" onclick="addhandlers(window.frames[0]);" />
</form>
<iframe id="frm" height="300" src="test.htm" width="700"></iframe>
</body>
</html>
のTest.htmファイルは、場所にいくつかの定期的なリンクを持つだけで、標準のHTMLファイルです。
まず、[ハンドラを追加]ボタンをクリックしてリスナーを追加し、iframe内のtest.htm内のリンクをクリックします。私の期待は、私は警告を得ることですが、何も起こりません。なぜ、私はそれをどのように解決するのですか?私は現在、FirefoxとIEで動作するソリューションを探しています(しかし、いずれのブラウザでも何も起こりません)。
**ドメイン内の期間ではないIFrameにはアクセスできません**。それはテキサス州の大きさのセキュリティホールです。ほとんどの場合、現代のブラウザーのすべてではないにしても、それを内部的に防止します。 XSS(クロスサイトスクリプティング)を読んで、それをよりよく理解することをお勧めします。 –