IFrame按钮单击事件

时间:2012-11-03 23:24:41

标签: javascript iframe

我正在尝试将eventlistener附加到IFrame页面上按钮的“click”事件中。 iframe中的页面与父窗口属于同一个域。

window.frames["iframe_Id"].document.getElementById("button_id").addEventListener("click",functionToRun,false);

以上样本对我不起作用。它可能只是我实际代码中的语法错误,但我想看看这是否是一般的想法。

注意:我发现很多关于将Click事件添加到整个iframe的示例,但我不确定它对Iframe中的按钮是否有效。

4 个答案:

答案 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作为最终参数。