Javascript 使用electron在浏览器中打开iframe链接

Javascript 使用electron在浏览器中打开iframe链接,javascript,jquery,html,iframe,electron,Javascript,Jquery,Html,Iframe,Electron,我想使用electron在浏览器中打开iframe链接。我找到了一些解决方案,但它们不起作用,以下是我尝试过的示例: 我认为问题在于,链接在scr标签中 寻找一个可能的解决方案为什么什么都不起作用 下面是一个iframe元素示例 <iframe src="https://rcm-eu.amazon-adsystem.com/e/cm?o=3&p=48&l=ur1&category=channels&banner=138WWDCBD6MQJVWGMHG

我想使用electron在浏览器中打开iframe链接。我找到了一些解决方案,但它们不起作用,以下是我尝试过的示例:

我认为问题在于,链接在scr标签中

寻找一个可能的解决方案为什么什么都不起作用

下面是一个iframe元素示例

<iframe src="https://rcm-eu.amazon-adsystem.com/e/cm?o=3&p=48&l=ur1&category=channels&banner=138WWDCBD6MQJVWGMHG2&f=ifr&linkID=0335593f7b48da8f8d1dab568039dc08&t=adrgoe-21&tracking_id=adrgoe-21" width="728" height="90" scrolling="no" border="0" marginwidth="0" style="border:none;" frameborder="0"></iframe>

您正在检测对
a[href^=“http”]
的点击,但您的标记是
iframe

实际上,您应该给iframe一个
id
或其他东西,然后处理您的点击目标。e、 g

<iframe id="myframe" src="...></iframe>
我找到了解决办法。 我将iframe更改为webview:

<webview id="webview" src="https://stackoverflow.com/" nodeintegration></webview>
您可以选择不同的操作,而不是“将导航”

现在我必须找出,如何停止在webview中更改页面。 但是它会在默认浏览器中打开链接。

如果我了解github上的链接,那么一种方法是使用
而不是
。然后将这样的代码放入main.js/browser进程,而不是渲染器进程

app.on('web-contents-created', (event, contents) => {
  if (contents.getType() === 'webview') {
    contents.on('will-navigate', (event, url) => {
      event.preventDefault();
      shell.openExternal(url);
    });
  }
});

将代码放入渲染器进程将不起作用,至少从Electron 1.8.4开始不起作用。请提供您遇到问题的代码。我尝试使用该代码并尝试了一些方法。但我不明白标准浏览器中的链接是否已打开。
<webview id="webview" src="https://stackoverflow.com/" nodeintegration></webview>
const {shell} = require('electron')
const webview = document.querySelector('webview')
webview.addEventListener('will-navigate', (e) => {
  const protocol = require('url').parse(e.url).protocol
  if (protocol === 'http:' || protocol === 'https:') {
    shell.openExternal(e.url)
  }
});
webview.addEventListener('will-navigate', (e) => {
app.on('web-contents-created', (event, contents) => {
  if (contents.getType() === 'webview') {
    contents.on('will-navigate', (event, url) => {
      event.preventDefault();
      shell.openExternal(url);
    });
  }
});