是否可以检测JavaScript何时打开窗口';什么地方变了?

是否可以检测JavaScript何时打开窗口';什么地方变了?,javascript,Javascript,如果我使用JavaScript(例如,使用window.open())打开一个窗口,有没有一种方法可以在我打开的窗口的URL发生更改时使用我打开的窗口上的句柄得到通知?例如,我希望能够做这样的事情,一般来说: <script type="text/javascript"> function openNewWindowAndNavigateTo(url) { var w = window.open(url, "myWindow"); w

如果我使用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>

函数openNewWindowAndNavigateTo(url)
{
var w=window.open(url,“myWindow”);
w、 添加的列表器(“位置更改”,手动位置更改);
}
功能手动位置更改(e)
{
警报(如sourceWindow.newLocation);
}
去

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

如果两个文档都在同一个域上并且在您的控制下,您需要让新加载的文档发出脚本通知父窗口它刚刚加载:

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

window.opener.notifyOpened(window.location.href+“刚刚加载”);

否则,不会。在浏览器中导航的行为超出了JavaScript沙盒的范围。显然,有很多更优雅、更稳健的方法来完成我上面演示的工作,但这能让人们了解一般的关系。

是的,这是完全有道理的——尽管这是我害怕的答案。)感谢您的及时回复!