IFrame button click event

后端 未结 4 581
傲寒
傲寒 2020-12-11 12:44

I\'m trying to attach an eventlistener to the \"click\" event of a button on a page in an IFrame. The page in the iframe belongs to the same domain as the parent window.

相关标签:
4条回答
  • 2020-12-11 13:09

    window.frames is an array-like object, so its elements can be accessed by indexes only.

    You should loop through them, and check their id, e.g.:

    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);
        }
    }
    
    0 讨论(0)
  • 2020-12-11 13:13
    window.frames["iframe_Id"].contentWindow.document.getElementById("button_id").addEventListener("click",functionToRun,false);
    
                                  ^
    

    The contentWindow property.

    From the DOM iframe element, scripts can get access to the window object of the included HTML page via the contentWindow property.

    0 讨论(0)
  • 2020-12-11 13:17

    Have you tried executing the event in the "capturing" vs. "bubbling" phase?

    document.getElementById("iframe_Id")
     .document.addEventListener("click", functionToRun, true);
    

    Note the true instead of false as the final parameter.

    0 讨论(0)
  • 2020-12-11 13:25

    Using jQuery:

    $("#iframe_Id").contents("#button_id").click(functionToRun);
    

    Or without jQuery:

    document.getElementById("iframe_Id").contentWindow.document.getElementById("button_id").addEventListener("click", functionToRun, false);
    

    This will only work if the iframe meets the same origin policy.

    0 讨论(0)
提交回复
热议问题