[英]Event handler for iframe loaded not firing
我的HTML中有一個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中都可以使用的解決方案(但是在任何一種瀏覽器中都沒有任何反應)。
一種解決方法是將JavaScript包含在test.htm中
test.htm:
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) {
window.parent.iframeLoaded()
}
parentpage.htm:
function iframeLoaded() {
alert('loaded');
}
請注意,這僅在兩個文件都在同一域中時才有效
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.