在我的Chrome应用中,我使用webview嵌入外部网页,许多Chrome应用也是如此 . 此嵌入式网页偶尔会包含指向其内容中外部URL的链接,这些链接不在我的控制之内 . 我想配置应用程序,以便在从webview中单击时在Chrome浏览器中加载URL . webview中显示的内容将目标属性设置为“_blank”的URL格式化,这通常会在新窗口中打开链接 . 我能够在webview中监听新窗口事件,但是我在解析要在浏览器中打开的URL时遇到问题 .
使用以下代码,单击webview中的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);
});
};
};
}