在我的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);
});
};
};
}