首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >On-site Javascript在Electron中不起作用,但在其他任何地方都起作用

On-site Javascript在Electron中不起作用,但在其他任何地方都起作用
EN

Stack Overflow用户
提问于 2015-08-12 18:03:03
回答 2查看 4K关注 0票数 3

我昨天为一个网站写了一个小的桌面包装器(它实际上只是加载一个网站),作为对Electron的一点练习,但我注意到了以下事情:

Javascript,应该(并且确实)在每个浏览器上都能正常工作,但它不能在Electron上工作,因为它会抛出一个错误,这与特殊情况下的Javascript有关。

代码语言:javascript
复制
[2268:0812/115601:INFO:CONSOLE(18)] "Uncaught TypeError: Cannot read property 'on' of undefined", source: https://twist.moe/public/lib/snap.svg-min.js (18)

我先在这里问这个问题,因为对我来说,除了在Electron之外,它在其他任何地方都可以工作,这对我来说很奇怪。有没有什么特殊的选项可以传递给BrowserWindow设置,让它正常工作?

如果你想摆弄一下源代码,你可以找到here

EN

回答 2

Stack Overflow用户

发布于 2018-10-21 07:30:07

只需这样做:

window = new BrowserWindow({ webPreferences: { nodeIntegration: false } })

票数 4
EN

Stack Overflow用户

发布于 2015-08-12 21:21:16

电子BrowserWindow中的JavaScript环境与在Chrome/FF/IE等普通实例中运行的环境并不完全相同,一个巨大的区别是BrowserWindow集成了node.js。因为打开了节点集成,所以节点的一些内容可能会与为普通浏览器编写的JavaScript冲突。看一下这个线程,例如:How do I use Dojo Toolkit in an Electron application?。在这个例子中,Dojo使用了'require‘,这在普通浏览器中工作得很好。但是,当直接加载到电子BrowserWindow中时,它会失败,因为require已经通过节点集成定义,并且具有不同的功能。我不能确定这就是导致你的问题的真正原因,但如果它在一个正常的浏览器中工作得很好,它很可能就是原因。

如果你想从网页上加载一个页面,最好使用Electron的webview元素。在加载webview之前,您可以运行一个脚本,以允许您设置应用程序可用于富桌面集成的全局变量。将网页从互联网直接加载到BrowserWindow中可能是相当危险的,因为使用node.js,网页将拥有“王国的钥匙”,可以说,它可以自行决定打开和编辑文件。使用webview元素可以让您更好地控制页面可以做什么或不可以做什么。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31962017

复制
相关文章

相似问题

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