众所周知,单击 iframe 中的普通链接会打开 iframe 中的相应页面。现在我的问题是是否有办法对 iframe 所在页面上打开的新页面做出反应。就像 iframe.onpagechange 事件一样,只要 iframe 中的页面发生更改,例如单击链接时,就会触发该事件。
有这样的事件吗?如果没有,您对可能的方法有什么建议吗?
众所周知,单击 iframe 中的普通链接会打开 iframe 中的相应页面。现在我的问题是是否有办法对 iframe 所在页面上打开的新页面做出反应。就像 iframe.onpagechange 事件一样,只要 iframe 中的页面发生更改,例如单击链接时,就会触发该事件。
有这样的事件吗?如果没有,您对可能的方法有什么建议吗?
在那种情况下,不,这是不可能的,在所有浏览器中都不可靠。
在更现代的浏览器中,它们确实允许您在 iframe 标记本身上使用“onload”事件,并且每次 iframe 重新加载时都会触发 - 即单击链接时。但是,旧浏览器不支持此功能,并且有许多网站旨在打破框架。如果站点超出您的框架,您将不会触发任何加载事件。最重要的是,因为您正在处理您的控制/域之外的 iframe,这几乎是您所能做的——告诉框架已加载——其他所有内容都将被阻止访问。
<iframe onload="iframeLoaded()" src="..." />
或者更好的方法是:
<iframe id="frame" src="..." />
<script>
window.onload = function(){
document.getElementById('frame').addEventListener('load', iframeLoaded);
}
</script>
正如我在评论中所说,给 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>