我昨天为一个网站写了一个小的桌面包装器(它实际上只是加载一个网站),作为对Electron的一点练习,但我注意到了以下事情:
Javascript,应该(并且确实)在每个浏览器上都能正常工作,但它不能在Electron上工作,因为它会抛出一个错误,这与特殊情况下的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。
发布于 2018-10-21 07:30:07
只需这样做:
window = new BrowserWindow({ webPreferences: { nodeIntegration: false } })
发布于 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元素可以让您更好地控制页面可以做什么或不可以做什么。
https://stackoverflow.com/questions/31962017
复制相似问题