在Chrome浏览器中从Webview打开链接

时间:2018-07-18 03:05:54

标签: javascript google-chrome-app

在我的chrome应用程序中,与许多chrome应用程序一样,我使用的是Webview来嵌入外部网页。该嵌入式网页有时在其内容中包含指向外部URL的链接,这些链接不在我的控制范围内。我想配置该应用程序,以便在从Web视图中单击URL时将它们加载到chrome浏览器中。在Webview中显示的内容将URL的格式设置为目标属性设置为“ _blank”的URL,这通常会在新窗口中打开链接。我能够在Web视图中侦听新窗口事件,但是无法解析要在浏览器中打开的URL。

使用以下代码,在Web视图中单击URL会生成一个新的浏览器选项卡,但是URL为空白(大约:空白)。基于此,以下URL解析代码似乎无法正常工作。我将e.targetUrl变量记录到控制台,它在传递给window open命令之前确认了“ about:blank”的值。如何捕获从Webview内容中单击的URL,以便可以在外部浏览器中打开它?

谢谢!

function onWindowLoaded(popup) {
return function (win) {
    // On window loaded event
    win.contentWindow.onload = function () {
        // Get webview
        var webview = win.contentWindow.document.getElementById('webview');

        // Override default user agent if provided
        if (appConfig.userAgent) {
            webview.setUserAgentOverride(appConfig.userAgent);
        }

        // Sign up for 'permissionrequest' event
        webview.addEventListener('permissionrequest', function (e) {
            // Allow all permission requests
            e.request.allow();
        });

        // Sign up for 'newwindow' event
        // Emitted when a target='_blank' link is clicked within the 
           webview
        webview.addEventListener('newwindow', function (e) {
            // Parse target window URL to extract hostname
            var parsedUrl = document.createElement('a');
            parsedUrl.href = e.targetUrl;
            // Open the link in a new browser tab/window
            win.contentWindow.open(e.targetUrl);
        });
    };
};

}

0 个答案:

没有答案