我想在浏览器中使用电子打开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);
});
答案 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开始