请问当iframe完成加载时JavaScript回调?

当iframe完成加载时JavaScript回调?

当iframe完成加载时,我需要执行回调。我无法控制iframe中的内容,所以我不能从那里启动回调。

这个iframe是编程创建的,我需要将其数据作为回调中的变量传递,并销毁iframe。

有什么想法吗?

编辑:

我现在拥有的是:

function xssRequest(url, callback){
    var iFrameObj = document.createElement('IFRAME');
    iFrameObj.src = url;            
    document.body.appendChild(iFrameObj);   

    $(iFrameObj).load(function() 
    {
        document.body.removeChild(iFrameObj);
        callback(iFrameObj.innerHTML);
    });}

此回调在iframe加载之前进行,因此回调不返回数据。



汪汪一只猫
浏览 398回答 3
3回答

jeck猫

首先,使用函数名xssRequest听起来你在尝试跨站点请求-如果是这样的话,你将无法读取iframe的内容。另一方面,如果iframe的URL在您的域中,您可以访问主体,但是我发现,如果我使用超时来删除iframe,回调可以正常工作:// possibly excessive use of jQuery - but I've got a live working example in production$('#myUniqueID').load(function () {   if (typeof callback == 'function') {     callback($('body', this.contentWindow.document).html());   }   setTimeout(function () {$('#frameId').remove();}, 50);});

月关宝盒

我使用的是jQuery,令人惊讶的是,这似乎是加载的,因为我刚刚测试并加载了一个沉重的页面,直到我看到iframe加载时才收到警报:$('#the_iframe').load(function(){     alert('loaded!');});因此,如果您不想使用jQuery,看看它们的源代码,看看这个函数在iframe DOM元素中的行为是否不同,我将在稍后查看它,因为我感兴趣并在这里发表文章。此外,我只测试了最新的铬。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript