首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为页面上的每个iFrame添加`load`事件

为页面上的每个iFrame添加`load`事件
EN

Stack Overflow用户
提问于 2018-09-11 13:28:39
回答 2查看 849关注 0票数 1

我有一个动态添加iFrames的页面。我想为每个iFrame捕捉"onLoad“事件。

因此,基本上,我希望将事件附加到主体,但使其应用于每个子iFrame。这适用于其他事件,但看起来"load“事件不会传播。

这是我到目前为止尝试过的:

代码语言:javascript
复制
$(document).on("load", "iframe", function() {
	$("body").append("this is what I want, but it doesn't work!");
});

var iFrame = $("<iframe/>", {
        srcdoc  : "<html style='overflow: hidden;'><body>Appended iFrame</body></html>"
});

$("body").append(iFrame);

iFrame.on("load",function(){
	$("body").append("this seems to work.... but isn't what I'm looking for.");
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

这里是jsfiddle:https://jsfiddle.net/skeets23/qsrf802z/8/

有没有办法让它像预期的那样工作?所以我可以只创建一个绑定,并让它对任意数量的动态添加的iFrames起作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-12 08:09:51

似乎你想动态添加iframe,所以,最好的方法是捕获文档的事件DOMNodeInserted。请参见以下示例:

代码语言:javascript
复制
$(document).on('DOMNodeInserted', function(e) {
    //check is iframe is loaded
    if(e.target.localName=="iframe"){
      console.log("New iframe loaded!");
      $("div").append("this does NOT seem to work!");
    };
});
function addIframe(){
    var iFrame = $("<iframe />", {
            srcdoc  : "<html style='overflow: hidden;'><body>Appended iFrame</body></html>"
    });
    $("body").append(iFrame);
    iFrame.on("load",function(){
      $("div").append("this seems to work....");
    });
};
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <button onclick="addIframe();">Add Iframe</button>
    <div>

    </div>

票数 1
EN

Stack Overflow用户

发布于 2018-09-11 14:15:10

$(document).on("load" ...更改为$("iframe").on("load", ...。并把它放在脚本的末尾,它会起作用的!

代码语言:javascript
复制
var iFrame = $("<iframe />", {
        srcdoc  : "<html style='overflow: hidden;'><body>Appended iFrame</body></html>"
});

$("body").append(iFrame);

iFrame.on("load",function(){
	$("div").append("this seems to work....");
  //alert("cde");
});
$("iframe").on("load", function () {
	$("div").append("this does NOT seem to work!");
  alert("abc");
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div>

    </div>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52269193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档