检测动态加载的iframe

时间:2013-09-23 09:50:37

标签: javascript jquery iframe google-chrome-extension

我需要知道何时在页面上创建特定的iframe。 当用户按下按钮时,iframe是用JS创建的,并且可以多次创建和销毁。

更新:创建iframe的JS是原始页面的一部分,因此我无法对其进行修改或访问其变量或函数,Chrome扩展程序是沙箱。

我无法控制iframe的内容,也无法在其中注入任何JS。 我只能在主页面中注入JS,否则就没有其他控制权。

(这是Chrome扩展程序,据我所知,它只能在主页面中插入JS代码,或者在页面加载后加载iframe但不会在页面加载后动态创建iframe)

目前我这样做:

window.setInterval( function() {
  $("iframe").each(function(){
    if ($(this).attr('id')) {
      if ($(this).attr('id') == "iframe_id") {
        //my code
      }
    }
  });
}, 1000);

但由于性能问题,我真的想避免使用setInterval。 这有可能吗?

1 个答案:

答案 0 :(得分:0)

一个。 Wolff可能已经回答了你的问题(“当用户按下按钮时,iframe是用JS创建的”所以你知道iframe何时被创建“)。

如果你仍然不确定该怎么做......好吧:

间隔时间不是一个好主意 - 但你可能已经想到了这一点。试试on()方法。这应该会有所帮助。

$( "iframe" ).on( "click", function() {
     alert( "This is my iframe!" );
});

如果您在选择iframe的内容时遇到问题,也许您应该尝试访问以下元素:

$( "#iframe-id" ).contents().find( ".what-i-am-looking-for" ).hide();

如果您正在寻找的话,jQuery文档将非常有用:

http://api.jquery.com/on/

http://api.jquery.com/contents/

干杯!