检测动态加载的 iframe

detect a dynamically loaded iframe

本文关键字:iframe 加载 动态 检测      更新时间:2023-09-26

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

更新:创建 iframe 的 JS 是原始页面的一部分,所以我无法修改它或访问其变量或函数,chrome 扩展程序是沙盒化的。

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

(这是针对Chrome扩展程序的,据我所知,只能在主页或随页面加载的iframe中注入JS代码,而不能在页面加载后动态创建的iframe)

目前我这样做:

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

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

A. 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/

干杯!