如下记录了做者在实践中遇到的问题和最后的解决方法,若是有错误或者更新更完美的解决方案,欢迎留言指正、交流。css
jQuery 等新版本的框架,在 Electron 中使用普通的引入的办法会引起异常,缘由是 Electron 默认启用了 Node.js 的 require 模块,而这些框架为了支持 commondJS 标准,当 Window 中存在 require 时,会启用模块引入的方式。分别有如下几种解决方案:html
//好比 jQuery 中的第一行代码中 !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)} //改为: !function(a,b){b(a)}
//在引入框架以前先输入下面的代码 <script> window.nodeRequire = require; delete window.require; delete window.exports; delete window.module; </script>
// In the main process. let win = new BrowserWindow({ webPreferences: { nodeIntegration: false } });
//置于引入 jQuery 以后 <script>if (typeof module === 'object') {window.jQuery = window.$ = module.exports;};</script>
刚开始看到页面跳转,你们通常会想到用 window.location.href = './index.html';
这样的代码。结果是能够跳转,但 DOM事件 基本都会失效。到最后仍是使用的 electron 提供的 ipc 接口来建立新的窗口。node
//在main.js中:: const ipc = require('electron').ipcMain; //进行监控,若是有new-window 发送过来,则从新建立一个窗口,文件是list.html ipc.on('new-window',function() { mainWindow.loadURL(url.format({ pathname: path.join(__dirname, '/views/list.html'), protocol: 'file:', slashes: true })) })
为了使窗口无边框,使得在某些时候让项目看起来更美观,因此在建立窗口的时候经过设置 frame 属性的值为 false 来建立无边框窗口。可是无边框窗口会产生没法移动的问题,对于这个问题咱们能够在渲染进程中经过编辑 css 文件来解决。jquery
-webkit-app-region: drag
把整个文档都变成了一个可拖拽的对象:
body,html { -webkit-app-region: drag; }
no-drag
来解决:
section { -webkit-app-region: no-drag }