现场Javascript不是在Electron中工作,而是在其他任何地方工作

现场Javascript不是在Electron中工作,而是在其他任何地方工作,javascript,electron,Javascript,Electron,我昨天为一个网站写了一个小的桌面包装器(它实际上只是加载了一个网站),作为对Electron的一点练习,但我注意到以下几点: Javascript,它应该(并且确实)在每个浏览器上正常工作,但不适用于Electron,因为它会抛出一个错误,在这种特殊情况下与Javascript相关 [2268:0812/115601:INFO:CONSOLE(18)] "Uncaught TypeError: Cannot read property 'on' of undefined", source: ht

我昨天为一个网站写了一个小的桌面包装器(它实际上只是加载了一个网站),作为对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)
我先问这个问题,因为它在电子以外的任何地方都起作用,这对我来说似乎很奇怪。是否有任何特殊选项可以传递到
BrowserWindow
设置以使其工作


如果你想随意修改源代码,你可以找到它。

电子浏览器窗口中的JavaScript环境与Chrome/FF/IE等的普通实例中运行的环境并不完全相同。一个巨大的区别是浏览器窗口集成了node.js。由于启用了节点集成,node的某些功能可能与为普通浏览器编写的JavaScript冲突。以这个线程为例:。在该示例中,Dojo使用“require”,这在普通浏览器中运行良好。但是,当直接加载到Electron Browser窗口时,它会失败,因为require已经通过节点集成定义,并且具有不同的功能。我不能确定这样的事情是否是导致您的确切问题的原因,但如果它在普通浏览器中工作正常,则很可能是原因

如果要从web加载页面,最好使用Electron的webview元素。在加载之前,您可以运行一个脚本,以允许您设置应用程序可用于富桌面集成的全局变量。将网页从internet直接加载到浏览器窗口可能非常危险,因为使用node.js,网页将拥有“王国钥匙”,可以说,打开和编辑文件是由其自行决定的。使用webview元素可以让您更好地控制页面可以做什么,也可以不做什么。

只需执行以下操作:

window=新浏览器窗口({
网络首选项:{
节点集成:错误
}
})

您是否可以使用导致错误的脚本的非精简版本,并告诉我们哪一行抛出了错误?