iFrame src 更改事件检测?

2022-08-30 00:54:24

假设我无法控制iframe中的内容,有没有办法通过父页面检测其中的src更改?也许是某种负载?

我的最后一种方法是做一个1秒的间隔测试,如果iframe src与以前相同,但是做这个黑客解决方案会很糟糕。

如果有帮助,我正在使用jQuery库。


答案 1

您可能希望使用该事件,如以下示例所示:onLoad

<iframe src="http://www.google.com/" onLoad="alert('Test');"></iframe>

每当 iframe 中的位置发生更改时,就会弹出警报。它适用于所有现代浏览器,但可能无法在一些非常旧的浏览器中工作,如IE5和早期的Opera。(来源)

如果 iframe 显示父级同一域中的页面,则可以使用 访问该位置,如以下示例所示:contentWindow.location

<iframe src="/test.html" onLoad="alert(this.contentWindow.location);"></iframe>

答案 2

基于 JQuery < 3 的答案

$('#iframeid').load(function(){
    alert('frame has (re)loaded');
});

正如 subharb 所提到的,从 JQuery 3.0 开始,这需要更改为:

$('#iframe').on('load', function() {
    alert('frame has (re)loaded ');
});

https://jquery.com/upgrade-guide/3.0/#breaking-change-load-unload-and-error-removed