电子加载远程URL并执行javascript

时间:2017-12-29 19:46:37

标签: javascript electron

我正在尝试通过加载像这样的网址来加载电子网站

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>

但不是最佳,因为我很可能不允许更改网站本身的代码。 简单地将网站包装在电子中还有其他选择吗?

2 个答案:

答案 0 :(得分:3)

您需要在nodeIntegration设置中将BrowserWindow设置为false。那应该解决这个问题。请在此页面上查看webPreferenceshttps://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。