用浏览器运行Html页面没有任何问题,使用Electron运行时页面样式没有问题,但是Jquery方法没有执行,查完资料修改Jquery文件引用行代码为<script>window.$ = window.jQuery = require("./js/jquery.min.js");</script>
但是依然没有效果。
也不知道electron如何进行调试?
用浏览器运行Html页面没有任何问题,使用Electron运行时页面样式没有问题,但是Jquery方法没有执行,查完资料修改Jquery文件引用行代码为<script>window.$ = window.jQuery = require("./js/jquery.min.js");</script>
但是依然没有效果。
也不知道electron如何进行调试?
抱歉微挖坟,这个问题在国外已经讨论过了。我刚好路过搬运一下,好让日后版友能解决问题。
票数最多的留言提供的最简洁方案如下StackOverflow (by Dale Harders):
<!-- Insert this line above script imports --> <script>if (typeof module === 'object') {window.module = module; module = undefined;}</script> <!-- normal script imports etc --> <script src="scripts/jquery.min.js"></script> <script src="scripts/vendor.js"></script> <!-- Insert this line after script imports --> <script>if (window.module) module = window.module;</script>
参见自 问题 #254 @ Github
而这主要原因据在下不专业理解是因为 HTML这个子程序请求 jQuery,
然而全域并没有安装,所以任凭你丟十二道金牌 electron 还是不会乖乖地响应的,
上面提供的方法是告诉 electron 老子今天用这个 jQuery 用不着你 Node 模组管,
劳资另立专供通道,YCYU-NOBB。根据原作者的说法所有第三方库均能依此补贴土法炼。
在下也是亲测屡试不爽,还请老爷放过少爷。 (・ω・`三´・ω・)
当然,全域安装 jQuery 也是可行的,用法即如一楼菊苣所言,全域插件不能带 .js 副档名。
如果是用 BrowserWindow 打开的不是自己开发的页面,也就是说无法修改 HTML 代码的。建议可以使用 preload
属性【在页面运行其他脚本之前预先加载指定的脚本】。举例如下:
main.js
mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
webSecurity: true,
preload: path.resolve(path.join(__dirname, 'path/to/preload.js'))
},
width: 900,
height: 900
});
mainWindow.loadURL("https://externalsite.com");
preload.js
document.addEventListener("DOMNodeInserted", function(event) {
if (!!window && !(!!window.$)) {
window.$ = window.jQuery = require('path/to/jquery.js');
}
});
6 回答5.5k 阅读✓ 已解决
9 回答9.6k 阅读
5 回答3.8k 阅读✓ 已解决
4 回答8.2k 阅读✓ 已解决
7 回答10.2k 阅读
5 回答8.5k 阅读
2 回答10.6k 阅读✓ 已解决
require里不要带文件后缀
require("./js/jquery.min.js") -> require("./js/jquery.min")
另外,electron里打开调试工具是BrowserWindow.openDevTools
具体的可以查官方文档