【问题标题】:dynamically generated iframes don't respond to .load() [duplicate]动态生成的 iframe 不响应 .load() [重复]
【发布时间】:2013-02-19 22:03:32
【问题描述】:

我想在加载 iframe 时触发一个函数,问题是有些是动态生成的,不会触发 .load() 事件,我试过了:

$('.upload-target').on('load',uploadDone)

function uploadDone(){
    alert('ewfweewf');
}

但运气不好……如何在加载动态生成的 iframe 时触发函数?

【问题讨论】:

  • 首先,您需要使用正确的.on 委托语法。但是,我不完全确定 load 事件是否在所有浏览器中传播。(如果不走完全不同的路线,这将使您尝试做的事情几乎不可能)
  • 他使用.on()的方式没有任何问题。直接来自 jQuery 自己的文档的示例:function notify() { alert("clicked"); } $("button").on("click", notify);
  • @idrumgood 是的,但该语法不会将事件委托给动态元素。他缺少委托目标和上下文。

标签: jquery iframe


【解决方案1】:

正如您在这个小提琴中看到的,http://jsfiddle.net/Uj3bH/ 加载事件不会传播,因此您将无法使用事件委托绑定到 iframe 的加载事件。而是在创建动态 iframe 时绑定事件。

$(iframehtmlstring).appendTo("body").on("load",function(){
    console.log("worky")
});

【讨论】:

    【解决方案2】:

    我会说负载不会因为同源策略而传播 攻击者可能会滥用加载时间来获取更多信息。例如,如果登录,加载时间可能会更长。

    如果不是......好吧,那么我发现了一个安全问题;)

    【讨论】:

      【解决方案3】:

      试试这个:

      $('.upload-target').load(function(){
          alert('ewfweewf');
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-30
        • 2018-05-13
        • 2016-08-10
        • 2021-07-24
        • 1970-01-01
        相关资源
        最近更新 更多