Trigger events in iframe's parent window

前端 未结 4 1467
青春惊慌失措
青春惊慌失措 2020-12-13 10:13

Why is the following not working:

//iframe:
window.parent.$(document).trigger(\'complete\');

//parent window:
$(document).bind(\'complete\', function(){
  a         


        
相关标签:
4条回答
  • 2020-12-13 10:21

    Answering directly to OP's question: because there is a bug in the first code example.

    You pass the iframe's document object to the parent's $ function. This does not make much sense.

    1. Parent's jQuery instance can not trigger event on DOM object of other window;

    2. Even if it could, it is an iframe's document, but you try to listen for the event on parent's document.

    This would probably work:

    window.parent.$(window.parent.document).trigger('complete');
    
    0 讨论(0)
  • 2020-12-13 10:29

    You might try adding a triggering function in the parent document, then calling it as a regular function from the iframe. This should ensure you're triggering the event in the right document context.

    // In Parent
    function triggerComplete () {
      $(document).trigger('complete');
    }
    
    // In iFrame
    window.parent.triggerComplete();
    
    0 讨论(0)
  • 2020-12-13 10:31

    Check this solution, it's very tricky:

    top.frames['frame_name'].document.getElementById('Processing').style.display = 'none'; 
    
    0 讨论(0)
  • 2020-12-13 10:40

    The way events are tracked, you can only trigger or receive events on the same document.

    try

    window.parent.$(window.parent.document).trigger('complete');
    
    0 讨论(0)
提交回复
热议问题