每当iframe重新加载时都需要回调

时间:2012-02-20 19:17:15

标签: javascript iframe callback

这与Javascript callback when IFRAME is finished loading?类似,但区别在于我使用了我们正在使用的基于Web的应用程序,并对其进行了一些监控我将其放在iframe中,以便我的javascript可以看起来在网页内。

因此,当用户使用该应用程序时,它将加载新页面,但它们都在iframe中,不会重新加载。

是否有某种方式事件会在页面加载到此iframe时通知我,或者至少在页面被替换时被通知?

2 个答案:

答案 0 :(得分:2)

没有这样的事件。我想到的唯一想法是让计时器运行(window.SetInterval())定期检查iframe的位置(URL)是否与之前的检查相比发生了变化。

另一个想法是:您控制下的iframe的内容,还是您正在查看其他域中的内容?如果它是您的,您当然可以将事件放在该代码中,例如“onbeforeunload”,它会通知您是否重定向iframe。

答案 1 :(得分:1)

您是否可以控制在iframe中加载的页面?如果是这样,那么你可以添加一个仅执行此操作的js文件:

parent.loaded(document.location.href);

然后在主页面中,你有iframe的地方:

function loaded(url) {
    alert('"' + url + '" was loaded');
}

为此,您还需要在与主页相同的域中提供iframe中的所有页面。

修改

由于您从与主域相同的域提供iframe页面,因此您需要控制为页面提供服务的服务器,因此即使您无法修改代码,也可以在“运行”时修改它-time“当服务器返回内容时。例如,您可以返回一个js文件的修改版本,该文件始终加载了类似 parent.loaded(document.location.href); 的内容。

这似乎比使用setTimeout更复杂,但它是另一种解决方案。

你可以做的另一件事,因为你有权访问dom,就是注册onunload event,这样你就可以在确定页面即将被重新加载时使用setTimeout,防止继续无停止计时器。

所有这些都说,也许这不是实施此监控的最佳方式?也许你可以用浏览器扩展来实现这个?那些有权意识到所有文件位置变化的人。

另一个编辑

您可能想尝试将此onload event用于iframe