我第一次与js和node同时使用电子,我正在尝试为业余爱好和知识申请。 在实施脚本以打开外部链接时遇到了问题。
我一直在使用doc来解决此问题,但是我没有发现任何可以帮助我解决该问题的方法。
我的 ex-links.js
const electron = require("electron");
const { shell } = electron;
const exLinkBtn = document.getElementById("open-ex-link");
exLinkBtn.addEventListener("click", function() {
shell.openExternal("https://www.youtube.com/watch?v=ifXalt3MJtM");
});
我已经尝试过将slideler.html放置在index.html中,但是仍然遇到该错误,所以我将其保留为当前在iframe中的位置。
<iframe src="slider.html" frameborder=0 width="1180" height="728" style="padding-left:198.5px;"></iframe>
我希望通过单击打开外部链接按钮,它将在默认浏览器中打开链接。
答案 0 :(得分:0)
默认nodeIntegration
值为false
。因此,您可以将其设置为true
来解决该问题。
app.on('ready', () => {
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true
}
});
});
但是,当您在应用程序上执行一些不受信任的远程代码时,nodeIntegration: true
会带来安全风险。例如,当您的应用程序打开第三方网页时,这将带来安全风险,因为第三方网页将有权访问节点运行时并可以在用户的文件系统上运行恶意代码。因此,将nodeIntegration: false
设置为当前默认值是很有意义的。
您可以使用预加载脚本,因为它们可以访问require
和其他Node.js功能。
index.js就像:
const mainWindow = new BrowserWindow({
webPreferences: {
preload: path.join(app.getAppPath(), 'preload.js')
}
})
preload.js就像:
const { remote } = require('electron');
let currentWindow = remote.BrowserWindow.getFocusedWindow();
window.closeCurrentWindow = function(){
currentWindow.close();
}