iFrame src change event detection?

前端 未结 7 1518
夕颜
夕颜 2020-11-22 08:02

Assuming I have no control over the content in the iframe, is there any way that I can detect a src change in it via the parent page? Some sort of onload maybe?

My l

7条回答
  •  再見小時候
    2020-11-22 08:24

    If you have no control over the page and wish to watch for some kind of change then the modern method is to use MutationObserver

    An example of its use, watching for the src attribute to change of an iframe

    new MutationObserver(function(mutations) {
      mutations.some(function(mutation) {
        if (mutation.type === 'attributes' && mutation.attributeName === 'src') {
          console.log(mutation);
          console.log('Old src: ', mutation.oldValue);
          console.log('New src: ', mutation.target.src);
          return true;
        }
    
        return false;
      });
    }).observe(document.body, {
      attributes: true,
      attributeFilter: ['src'],
      attributeOldValue: true,
      characterData: false,
      characterDataOldValue: false,
      childList: false,
      subtree: true
    });
    
    setTimeout(function() {
      document.getElementsByTagName('iframe')[0].src = 'http://jsfiddle.net/';
    }, 3000);

    Output after 3 seconds

    MutationRecord {oldValue: "http://www.google.com", attributeNamespace: null, attributeName: "src", nextSibling: null, previousSibling: null…}
    Old src:  http://www.google.com
    New src:  http://jsfiddle.net/ 
    

    On jsFiddle

    Posted answer here as original question was closed as a duplicate of this one.

提交回复
热议问题