如何在新的浏览器选项卡中检测网址更改并获取网址?

时间:2017-01-19 00:28:10

标签: javascript typescript knockout.js

我有一个链接会在新标签页中打开一个网址,如下所示:

<a href="#" target="teamViewer" style="color: deepskyblue"><span data-bind="text: connectorLoginLink, visible: shouldShowConnectorLoginLink, click: openTeamViewerUrl"></span></a>

由于我想检测新标签中的URL更改,我认为我必须使用window.open(url)来打开此链接。然后,跟踪新窗口。

在viewmodel中:

public openTeamViewerUrl() {
    var newWindow = window.open('http://www.google.com', '_blank', 'location=yes');
}

我想将打开的标签设置为newWindow对象,然后使用以下内容监视它:

var currentPage = newWindow.location.href;

    setInterval(function () {
        console.log(currentPage);
        if (currentPage !== newWindow.location.href) {
            // page has changed, set new page as 'current'
            currentPage = newWindow.location.href;

            console.log(currentPage);
            // do other thing...
        }
    }, 1000);

我在尝试window.open时遇到错误:在新窗口中阻止打开“http://www.google.com/”,因为请求是在沙盒框架中进行的,其中“allow-popups”权限未设置。

真的被困在这上面了。如何通过allow-popups?可以使用其他方法实现此功能吗?

1 个答案:

答案 0 :(得分:0)

要检测网址更改,您可以使用unload上的javascript window活动,请参阅https://developer.mozilla.org/en-US/docs/Web/Events/unload

window.addEventListener('unload', function(event) {
    console.log('Navigation occuring');
});