0

众所周知,单击 iframe 中的普通链接会打开 iframe 中的相应页面。现在我的问题是是否有办法对 iframe 所在页面上打开的新页面做出反应。就像 iframe.onpagechange 事件一样,只要 iframe 中的页面发生更改,例如单击链接时,就会触发该事件。

有这样的事件吗?如果没有,您对可能的方法有什么建议吗?

4

2 回答 2

1

在那种情况下,不,这是不可能的,在所有浏览器中都不可靠。

在更现代的浏览器中,它们确实允许您在 iframe 标记本身上使用“onload”事件,并且每次 iframe 重新加载时都会触发 - 即单击链接时。但是,旧浏览器不支持此功能,并且有许多网站旨在打破框架。如果站点超出您的框架,您将不会触发任何加载事件。最重要的是,因为您正在处理您的控制/域之外的 iframe,这几乎是您所能做的——告诉框架已加载——其他所有内容都将被阻止访问。

<iframe onload="iframeLoaded()" src="..." />

或者更好的方法是:

<iframe id="frame" src="..." />

<script>
  window.onload = function(){
    document.getElementById('frame').addEventListener('load', iframeLoaded);
  }
</script>
于 2012-12-17T17:06:00.240 回答
0

正如我在评论中所说,给 html 目标属性一个机会open在 javascripts函数的上下文中使用它。

内嵌框架:HTML

<a href="http://yckart.com">Link</a>

框架:JS

$('a').on('click', function() {
    var target = this.href;
    window.open(target, "_parent");
    return false;
});

页面:HTML

<iframe src="http://fiddle.jshell.net/CGuHR/13/show"></iframe>

小提琴

于 2012-12-17T15:51:36.637 回答