在同一网络视图中的 chrome 应用中从网络视图打开 link

Open a link from a webview in a chrome app within the same webview

我正在尝试创建一个 chrome 信息亭应用程序,它将打开一个网页,该网页在网络视图中包含 links,然后在同一网络视图中加载 links。但是,我正在使用的网页上的 link 是 target="_blank" 并且在单击它们时出现错误 <webview>: A new window was blocked。我找到了这个 here 的解决方案,并尝试像这样实施它的建议:

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()
    });
  };
  }
 );
});

但是,我不希望在浏览器中打开 link,而是在启动 link 的同一网络视图中打开。

有没有办法捕获目标 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;
});

因为此脚本不会打开任何新的 windows,所以它不必在应用程序的后台脚本中特别是 运行。