如何从外部窗口检测用户在 iframe 中导航到的 URL?
Posted
技术标签:
【中文标题】如何从外部窗口检测用户在 iframe 中导航到的 URL?【英文标题】:How to detect the URL user is navigating to in an iframe from the outer window? 【发布时间】:2014-08-02 16:32:32 【问题描述】:场景如下:
该页面中有一个页面和一个 iframe。一开始,它们都来自同一个域(起源)。 iframe 可以包含到其他域的链接(或更改 window.location.href 的 javascript)。我想在外部框架中检测,当用户离开 iframe 中的原始域时,将外部页面的 window.location.href 替换为用户导航到的 URL,从而结束原来的 application在外框内运行。
尝试使用 beforeunload 事件,但内部框架的 location.href 没有改变。 iframe DOM 元素的 src 属性在 contentDocument 更改时也不会更改。
我的问题在当前的浏览器实现中是否可以解决,或者您会使用什么方法来获得最接近描述的行为?
【问题讨论】:
可能重复? ***.com/questions/2429045/… 并非如此。我在第一段中提到,当 iframe document.location.href 从内部更改时, src 属性不会更改。因此,'load' 事件和标记为答案的 contentDocument.location.href 没有解决方案,因为 iframe 导航到不同的域。 您是否可以控制初始 iframe 应用程序? 是的。我的脚本最初在外部框架和 iframe 中运行。 【参考方案1】: $(document).ready(function ()
$("#widget").load(function ()
var ifr = document.getElementById("widget")
var anchors = ifr.contentDocument.getElementsByTagName("a");
for (var i in anchors)
anchors[i].setAttribute("onClick", "testUrl()");
);
);
function testUrl()
//your code goes here for validating the URLs...
【讨论】:
以上是关于如何从外部窗口检测用户在 iframe 中导航到的 URL?的主要内容,如果未能解决你的问题,请参考以下文章
如何检测 jQuery 是不是在 WinForm WebBrowser 控件中导航到的文档中?
如何将 div 放置在两个 iframe 上,其中一个 iframe 具有外部(不同域)内容?