是否可以检测JavaScript打开窗口的位置何时发生变化?

时间:2009-07-30 00:08:30

标签: javascript

如果我用JavaScript打开一个窗口(例如,使用window.open()),有没有办法,使用我打开的窗口上的句柄,当我打开的窗口的URL发生变化时通知?例如,我希望能够做到这样的事情,通常是:

<script type="text/javascript">

    function openNewWindowAndNavigateTo(url)
    {
        var w = window.open(url, "myWindow");
        w.addEventListener("locationChange", handleLocationChange);     
    }

    function handleLocationChange(e)
    {
        alert(e.sourceWindow.newLocation);  
    }

</script>

<a onclick="openNewWindowAndNavigateTo('SomeDocumentIAuthored.html')">Go</a>

即使它是特定于浏览器的(这仅用于演示目的),这甚至可能吗?如果是这样,怎么样?假设两个文件都在同一个域上,等等。可以这样做吗?

1 个答案:

答案 0 :(得分:2)

如果两个文档都在同一个域中并且在您的控制之下,则需要使用新加载的文档emit脚本通知它刚刚加载的父窗口:

<script type="text/javascript">
    window.opener.notifyOpened(window.location.href + ' just loaded');
</script>

否则,不。在浏览器中导航的行为超出了JavaScript沙箱的范围。显然,有更多优雅,健壮的方式来做我上面演示的内容,但这可以获得一般的关系。