我正在尝试创建一个 chrome kiosk 应用程序,它将打开一个包含 web 视图中链接的网页,然后在同一个 web 视图中加载链接。但是,我正在使用的网页上的链接是,target="_blank"
并且<webview>: A new window was blocked
在单击它们时出现错误。我在这里找到了一个解决方案,并尝试像这样实施它的建议:
chrome.app.runtime.onLaunched.addListener(function() {
chrome.app.window.create(
'window.html',
{ 'width': 1000, 'height': 1000 },
function(win) {
win.contentWindow.onload = function() {
var webview = win.contentWindow.document.querySelector('#webview');
webview.addEventListener('newwindow', function(e) {
chrome.app.window.create(e.targetUrl,window.open()
});
};
}
);
});
但是,我希望链接不是在浏览器中打开,而是在链接启动的同一个 web 视图中打开。
有什么方法可以捕获目标 URL,去掉它的target="_blank"
属性,然后在原始 webview 中加载 URL?
内容脚本中的事件侦听器将在newwindow
触发事件时捕获 URL 。捕获 URL 后,将 URL 设置为 webview 的源是一件简单的事情。
var webview = document.querySelector('#webview');
webview.addEventListener('newwindow', function (e) {
//prevent the link from attempting to open a new window
e.preventDefault();
webview.src = e.targetUrl;
});
由于此脚本不会打开任何新窗口,因此不必专门在应用程序的后台脚本中运行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句