使用电子在浏览器中打开iframe链接

时间:2017-08-28 18:35:16

标签: javascript jquery html iframe electron

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

我认为问题是,链接在scr Tag中。

寻找可行的解决方案,为什么没有任何工作

以下是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>

这是我的电子代码

const shell = require('electron').shell;

// assuming $ is jQuery
$(document).on('click', 'a[href^="http"]', function(event) {
    event.preventDefault();
    shell.openExternal(this.href);
});

3 个答案:

答案 0 :(得分:1)

我找到了解决方案。 我将iframe更改为webview:

<webview id="webview" src="https://stackoverflow.com/" nodeintegration></webview>

JS现在是:

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

您可以选择不同的操作,而不是“将导航”。 Find the all here

webview.addEventListener('will-navigate', (e) => {

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

答案 1 :(得分:0)

您正在检测x = np.stack(dataframe.as_matrix(columns=['x']).ravel()) print("OUTPUT:") print(type(x), x.dtype, x.shape) print("----------") x = np.reshape(x, (x.shape[0], x.shape[1]*x[2])) OUTPUT: <class 'numpy.ndarray'> float64 (6, 10, 300) ---------- TypeError: only integer scalar arrays can be converted to a scalar index 上的点击次数,但您的标记为a[href^="http"]

你真的应该给iframe iframe或者其他东西然后处理点击它的点击。 e.g。

id

<iframe id="myframe" src="...></iframe>

答案 2 :(得分:0)

如果我理解github上的threads,则可以使用<webview>代替<iframe>。然后将这样的代码放在main.js / browser进程中 NOT 渲染器进程

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开始