当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加载之前的回调,所以回调没有返回数据。
发布于 2008-10-16 18:31:39
首先,使用函数名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);
});
发布于 2013-05-04 00:12:24
我正在使用jQuery,令人惊讶的是,这似乎是加载的,因为我刚刚测试并加载了一个很重的页面,几秒钟后我才收到警告,直到我看到iframe加载:
$('#the_iframe').load(function(){
alert('loaded!');
});
所以,如果你不想使用jQuery,看看他们的源代码,看看这个函数在iframe DOM元素中的表现是否不同,我会在以后自己研究它,因为我感兴趣并在这里发布。另外,我只测试了最新的chrome。
发布于 2008-12-05 05:33:44
在word文档和pdf等文档被流式传输到iframe的情况下,我不得不这样做,并找到了一个工作得很好的解决方案。关键是处理iframe上的onreadystatechanged
事件。
假设你的框架的名字是"myIframe“。首先,在代码启动的某个地方(我在iframe之后的任何地方都是内联的),添加如下代码来注册事件处理程序:
document.getElementById('myIframe').onreadystatechange = MyIframeReadyStateChanged;
我不能在iframe上使用onreadystatechage属性,我记不清为什么了,但这个应用程序必须在IE7和Safari3中工作,所以这可能是一个因素。
下面是一个如何获取完整状态的示例:
function MyIframeReadyStateChanged()
{
if(document.getElementById('myIframe').readyState == 'complete')
{
// Do your complete stuff here.
}
}
https://stackoverflow.com/questions/164085
复制相似问题