【问题标题】:How to stop an empty iframe triggering a load event on injection?如何停止在注入时触发加载事件的空 iframe?
【发布时间】:2013-03-20 06:35:56
【问题描述】:

我是using an empty frameto handle pseudo-asynchronous form submission。对于那些不熟悉该技术的人,这个想法是在表单的target 属性中引用框架的name 属性,这样表单的action 的URI 在框架中解析并且用户体验是' t被打断了。

为了反馈给用户,我需要使用脚本来监听表单上的 loaderror 事件,因为这实际上使整个 UX 脚本依赖于,我只注入框架并添加表单的目标引用通过脚本。

问题是框架一注入页面就会触发加载事件:default behaviour

我可以使用 jQuery 的 one 方法和 e.stopImmediatePropagation() (here) 来缓解这种情况,或者我可以注入框架并然后绑定事件 (here)。但是这两个选项都非常违反直觉——代码当然需要注释以避免看起来像一个错误。

TL;DR:有什么方法可以修改或限定 iframe 以阻止它在注入时触发错误的加载事件?

我尝试过的

  1. 没有src属性
  2. src 设置为 about:blank(上面是隐含的)
  3. src 设置为 #
  4. src 设置为 javascript:void 0
  5. src 设置为空数据-URI data:text/plain;base64,;
  6. srcdoc 设置为空或接近空的字符串

【问题讨论】:

    标签: javascript html dom javascript-events


    【解决方案1】:

    First put the iframe into the document, then register the listener:

    var e = $('<iframe>');
    e.appendTo('body');
    e.on('load', function(){
      alert('Loaded!')
    });
    

    【讨论】:

    • 这似乎只在 Chrome 中有效。在 Firefox 和 IE11 上,页面加载时会弹出“已加载”警报...
    猜你喜欢
    • 2017-06-28
    • 2015-05-20
    • 2014-01-01
    • 2011-10-18
    • 1970-01-01
    • 2010-09-06
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多