如果我用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>
即使它是特定于浏览器的(这仅用于演示目的),这甚至可能吗?如果是这样,怎么样?假设两个文件都在同一个域上,等等。可以这样做吗?
答案 0 :(得分:2)
如果两个文档都在同一个域中并且在您的控制之下,则需要使用新加载的文档emit脚本通知它刚刚加载的父窗口:
<script type="text/javascript">
window.opener.notifyOpened(window.location.href + ' just loaded');
</script>
否则,不。在浏览器中导航的行为超出了JavaScript沙箱的范围。显然,有更多优雅,健壮的方式来做我上面演示的内容,但这可以获得一般的关系。