我正在尝试通过加载像这样的网址来加载电子网站
mainWindow.loadURL('http://localhost/index.html')
但是像这样,网站上的javascript无法加载。 以下解决方案有效: 围绕index.html
中加载的app.js添加以下代码<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script>
<script src="/app/app.js"></script>
<script>if (window.module) module = window.module;</script>
但不是最佳,因为我很可能不允许更改网站本身的代码。 简单地将网站包装在电子中还有其他选择吗?
答案 0 :(得分:3)
您需要在nodeIntegration
设置中将BrowserWindow
设置为false。那应该解决这个问题。请在此页面上查看webPreferences
:https://github.com/electron/electron/blob/master/docs/api/browser-window.md
答案 1 :(得分:2)
这只是克里斯·赖布施拉格(Chris Riebschlager)的回答示例。 在main.js中加载google.com
let googleWindow;
// handle create googleWindow
function createGoogleWindow(){
googleWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
preload:`${__dirname}/scripts/googleWindow.js`
}});
//load html into window
googleWindow.loadURL('https://www.google.com/');
//garbage collection handle
googleWindow.on('close', function(){
googleWindow=null;
});
}
上面引用的脚本googleWindow.js:
const electron = require('electron');
function search(){
const input = document.querySelector('input[name="q"]');
input.value = "test";
}
setTimeout(function(){ alert("Hello");search(); }, 3000);
上述脚本会在3秒钟后提示“您好”,然后在google.com的搜索框中输入“测试”。
您还可以从主进程发送事件作为触发器,使用窗口的webContents。