首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >带有文件而不是文本的电子- mainWindow.webContents.executeJavaScript()

带有文件而不是文本的电子- mainWindow.webContents.executeJavaScript()
EN

Stack Overflow用户
提问于 2018-09-22 03:23:33
回答 2查看 1.6K关注 0票数 0

我正在构建一个不能使用webview的应用程序,因为它不能做我想做的所有事情,而使用mainWindow则可以。

但是,我需要使用整个javascript文件,而不仅仅是文本。

示例:

const {app, BrowserWindow} = require('electron');

let mainWindow;

app.on('ready', function() {
    mainWindow = new BrowserWindow({
        width: 1024,
        height: 1024
    });
    mainWindow.loadURL("https://www.google.com/");
    mainWindow.webContents.executeJavaScript('alert("this is a test!");');

    // I want to load an entire file for the .executeJavaScript()
    // I have a file within the same directory called 'index.js'
    // How would I implement this?
    mainWindow.webContents.executeJavaScript('???');
});
EN

回答 2

Stack Overflow用户

发布于 2018-09-22 03:26:46

把文件读成一个字符串并执行它怎么样?

const fs = require("fs");

const js = fs.readFileSync('./somefile.js').toString();

mainWindow.webContents.executeJavaScript(js);
票数 1
EN

Stack Overflow用户

发布于 2019-04-13 15:53:45

我遇到了同样的需求,在npm安装xmlhttprequest之后,使用以下代码片段通过executeJavaScript方法执行文件中的脚本

var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var scriptDirectory='file://' + __dirname + "/scripts/script-ext.js"  //given that the scripts folder exists in your project's parent directory 
var rawFile = new XMLHttpRequest();
rawFile.open("GET",scriptDirectory,false);
rawFile.onreadystatechange = function () {
if (rawFile.readyState === 4) {
   if (rawFile.status === 200 || rawFile.status == 0) {
       var allText = rawFile.responseText;
       console.log(allText) //this will log your script file code content to be executed
       mainWindow.webContents.executeJavaScript(allText)
           }
        }
     }
        rawFile.send(null);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52449969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档