我试图在iframe的事件监听附加到按钮的“单击”事件的网页上。 在iframe页面属于同一个域作为父窗口。
window.frames["iframe_Id"].document.getElementById("button_id").addEventListener("click",functionToRun,false);
上述样品不是为我工作。 它可能只是在我的实际代码AA语法错误,但我想看看这是一般的想法。
注:我发现了大量的实例在其上添加click事件给整个的iframe,但我不知道它的工作原理相同的iframe内的按钮。
使用jQuery:
$("#iframe_Id").contents("#button_id").click(functionToRun);
或者没有jQuery的:
document.getElementById("iframe_Id").contentWindow.document.getElementById("button_id").addEventListener("click", functionToRun, false);
这如果IFRAME符合只会工作, 同一产地的政策。
window.frames是阵列状物体,因此它的元件可以仅通过索引来访问。
您应该循环通过他们,并检查它们的ID,例如:
var frame; for(i = 0; i < frames.length; i++) {
frame = frames[i];
if (frame.id === 'iframe_id') {
frame.document
.getElementById("button_id")
.addEventListener("click",functionToRun,false);
}
}
您是否尝试过在执行时“捕捉”与“冒泡”阶段?
document.getElementById("iframe_Id")
.document.addEventListener("click", functionToRun, true);
请注意, true
而不是false
的最后一个参数。
window.frames["iframe_Id"].contentWindow.document.getElementById("button_id").addEventListener("click",functionToRun,false);
^
该contentWindow财产。
从DOM IFRAME元素,脚本能获得通过contentWindow属性访问所包含的HTML页面的窗口对象。