如何检测iframe的来源何时更改?

时间:2010-07-02 02:47:37

标签: javascript jquery html iframe

我想检测用户何时点击iframe中的链接并更改iframe的来源,因为我想调整它的大小。我也使用jQuery。检测此问题的最佳方法是什么?

其实我需要这样的东西(这个例子是在jQuery中,它不起作用,我想到了这个)

$('#iframe').live('load', function(){ alert('src is changed')});

2 个答案:

答案 0 :(得分:13)

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

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

只要iframe中的位置发生变化,系统就会弹出警报。它适用于所有现代浏览器,但可能无法在IE5和早期Opera等一些非常老的浏览器中使用。 (Source

请注意,如果iframe位于其他域或子域中,您将无法访问contentWindow.location,但onLoad事件仍会触发。

答案 1 :(得分:3)

这不是一个完全干净的解决方案,但它可以工作:您可以创建一个定期检查iframe源是否已更改的计时器。

var prevSrc = '';
function check() {
  var curSrc = $('#iframe').attr('src');
  if (curSrc != prevSrc) {
    // source has changed; do something
    prevSrc = curSrc;
  }
}

window.setInterval(check, 1000); // 1 sec - this can be anything you want