我正在尝试将eventlistener附加到IFrame页面上按钮的“click”事件中。 iframe中的页面与父窗口属于同一个域。
window.frames["iframe_Id"].document.getElementById("button_id").addEventListener("click",functionToRun,false);
以上样本对我不起作用。它可能只是我实际代码中的语法错误,但我想看看这是否是一般的想法。
注意:我发现很多关于将Click事件添加到整个iframe的示例,但我不确定它对Iframe中的按钮是否有效。
答案 0 :(得分:6)
使用jQuery:
$("#iframe_Id").contents("#button_id").click(functionToRun);
或者没有jQuery:
document.getElementById("iframe_Id").contentWindow.document.getElementById("button_id").addEventListener("click", functionToRun, false);
这仅适用于iframe符合same origin policy.
的情况答案 1 :(得分:0)
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);
}
}
答案 2 :(得分:0)
window.frames["iframe_Id"].contentWindow.document.getElementById("button_id").addEventListener("click",functionToRun,false);
^
contentWindow 属性。
从DOM iframe元素,脚本可以访问窗口 通过contentWindow属性包含的HTML页面的对象。
答案 3 :(得分:0)
您是否尝试在"capturing" vs. "bubbling"阶段执行该活动?
document.getElementById("iframe_Id")
.document.addEventListener("click", functionToRun, true);
请注意true
而不是false
作为最终参数。