Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从外部窗口在iframe中检测用户导航到的URL?_Javascript_Html_Dom_Iframe_Cross Domain - Fatal编程技术网

Javascript 如何从外部窗口在iframe中检测用户导航到的URL?

Javascript 如何从外部窗口在iframe中检测用户导航到的URL?,javascript,html,dom,iframe,cross-domain,Javascript,Html,Dom,Iframe,Cross Domain,情况如下: 页面中有一个页面和一个iframe。一开始,他们都来自同一个领域(起源)。iframe可以包含指向其他域的链接(或更改window.location.href的javascript)。我想在外部框架中检测,当用户导航离开iframe中的原始域时,用用户导航到的URL替换外部页面的window.location.href,从而结束在外部框架中运行的应用程序 尝试使用beforeunload事件,但未更改内部帧的位置.href。此外,当其contentDocument更改时,iframe

情况如下:

页面中有一个页面和一个iframe。一开始,他们都来自同一个领域(起源)。iframe可以包含指向其他域的链接(或更改window.location.href的javascript)。我想在外部框架中检测,当用户导航离开iframe中的原始域时,用用户导航到的URL替换外部页面的window.location.href,从而结束在外部框架中运行的应用程序

尝试使用beforeunload事件,但未更改内部帧的位置.href。此外,当其contentDocument更改时,iframe DOM元素的src属性不会更改


我的问题在当前的浏览器实现中可以解决吗?或者您将使用什么方法来获得与所述行为最接近的行为?

可能的重复?不是真的。我在第一段中提到,当iframe document.location.href从内部更改时,src属性不会更改。因此,标记为答案的“load”事件和contentDocument.location.href在iframe导航到其他域时没有解决方案。您是否控制初始iframe应用程序?是。我的脚本最初在外部框架和iframe中运行。
    $(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... 
}