导读:

以下记录了作者在实践中遇到的问题和最后的解决方法,如果有错误或者更新更完美的解决方案,欢迎留言指正、交流。

1、jQuery/RequireJS/Meteor/AngularJS 的问题

jQuery 等新版本的框架,在 Electron 中使用普通的引入的办法会引发异常,原因是 Electron 默认启用了 Node.js 的 require 模块,而这些框架为了支持 commondJS 标准,当 Window 中存在 require 时,会启用模块引入的方式。分别有以下几种解决方案:

1-0、去掉框架中的模块引入判断代码。例如:
//比如 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)}
1-1、使用 Electron 官方论坛提供的方法,改变require的写法。下面的代码各个框架通用:
//在引入框架之前先输入下面的代码
<script>
window.nodeRequire = require;
delete window.require;
delete window.exports;
delete window.module;
</script>
1-2、禁用Node.js的require模块化引入(如果你不想使用 Node.js 模块):
// In the main process.
let win = new BrowserWindow({
webPreferences: {
nodeIntegration: false
}
});
1-3、为使 web 项目正常浏览,在引入 jquery 后进行判断:
//置于引入 jQuery 之后
<script>if (typeof module === 'object') {window.jQuery = window.$ = module.exports;};</script>

2、关于页面跳转 的问题

刚开始看到页面跳转,大家一般会想到用 window.location.href = './index.html'; 这样的代码。结果是可以跳转,但 DOM事件 基本都会失效。到最后还是使用的 electron 提供的 ipc 接口来创建新的窗口。

2-0、在接收到命令后创建下一个窗口(创建窗口需要时间,期间可能出现空白):
//在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
}))
})

3、关于无边框窗口 的问题

为了使窗口无边框,使得在某些时候让项目看起来更美观,所以在创建窗口的时候通过设置 frame 属性的值为 false 来创建无边框窗口。但是无边框窗口会产生无法移动的问题,对于这个问题我们可以在渲染进程中通过编辑 css 文件来解决。

设置 -webkit-app-region: drag 把整个文档都变成了一个可拖拽的对象:
body,html {
-webkit-app-region: drag;
}
现在拖动的问题解决了,但是原来所有的点击事件却失效了,为此我们通过设置部分的这个属性值为 no-drag 来解决:
section {
-webkit-app-region: no-drag
}

Electron 常见问题的更多相关文章

  1. 【Electron】Electron Icon 图标说明、及常见问题

    [Electron]Electron Icon 图标说明.及常见问题 其实各种打包模块都有相关的文档说明,相关链接如下: electron-builder:https://www.electron.b ...

  2. 构建Electron的常见问题(Mac)

    背景 起因是产品的需求,需要更换Electron为底层平台,但因为会有不少定制化的功能要实现,必须自己实现此类内容,所以也就导致必须自己编译Electron的源代码. 整个构建过程,看Electron ...

  3. electron-vue:Vue.js 开发 Electron 桌面应用

    相信很多同学都知道 Electron 可以帮助开发人员使用前端技术开发桌面客户端应用,今天介绍的 electron-vue 框架是一套基于 Vue.js 开发 Electron 桌面应用的脚手架,该项 ...

  4. electron快速开始

    初学electron 接触了两周的electron,感觉还不错,以后pc端基本上可以用electron加壳写pc端应用了,可以用nodejs的模块,也可以用es6.7,还可以直接操作系统文件.基本上可 ...

  5. 从零开始搭建Electron+Vue+Webpack项目框架,一套代码,同时构建客户端、web端(一)

    摘要:随着前端技术的飞速发展,越来越多的技术领域开始被前端工程师踏足.从NodeJs问世至今,各种前端工具脚手架.服务端框架层出不穷,“全栈工程师”对于前端开发者来说,再也不只是说说而已.在NodeJ ...

  6. Electron使用与学习--(页面间的通信)

    目录结构: index.js是主进程js. const electron = require('electron') const app = electron.app const BrowserWin ...

  7. Electron使用与学习--(基本使用与菜单操作)

    对于electron是个新手,下面纯属个人理解.如有错误,欢迎指出.   一.安装 如果你本地按照github上的 # Install the `electron` command globally ...

  8. C++常见笔试面试要点以及常见问题

    1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...

  9. SQL Server常见问题介绍及快速解决建议

    前言 本文旨在帮助SQL Server数据库的使用人员了解常见的问题,及快速解决这些问题.这些问题是数据库的常规管理问题,对于很多对数据库没有深入了解的朋友提供一个大概的常见问题框架. 下面一些问题是 ...

随机推荐

  1. 使用phpexcel导入excel文件种的时期数据时数据导入格式

    在使用phpexcel导入类似于 YYYY-MM-DD HH:ii:ss格式的数据时,导入成功以后会发现导入的数据其实是类似于42085.746516204格式的数据( excel在存储时间类型的数据 ...

  2. 关于sizeof的几个问题

    #include <stdio.h> #include <stdlib.h> int main(int argc, char const *argv[]) { char *ps ...

  3. 35.Unique Paths(不同的路径)

    Level:   Medium 题目描述:   A robot is located at the top-left corner of a m x n grid (marked 'Start' in ...

  4. ArcGis基础——相接面制造指定距离的分隔带

    回家,出发前夜,看完电影吃晚饭回到住处已近十一点,和同事扯了一会儿淡,正准备去睡觉,这哥们儿突然想起一个问题: 如何把相接的面搞出一个20cm的分隔带?因为两区划定项目数据质检要求不同的地块图斑间应有 ...

  5. linux基本命令的简单介绍

    基本命令 man:查看帮助信息 :一般系统命令太多,要记住这些命令是不可能的,man是一个联机帮助信息 man提供大量的帮助信息,一般分为以下4各部分 NAME:对命令的简单介绍 SYNOPSIS对命 ...

  6. kubernetes容器集群管理启动一个测试示例

    创建nginx 创建3个nginx副本 [root@master bin]# kubectl run nginx --image=nginx --replicas=3 kubectl run --ge ...

  7. Java compiler level does not match the version of the installed Java project facet错误

    出现问题情景:从其他地方导入一个项目的时候报错:Java compiler level does not match the version of the installed Java project ...

  8. 【转】CentOS 7.3 从下载到安装

    CentOS 7.3 从下载到安装  https://blog.csdn.net/sxy2475/article/details/75194142 [百度知道]图解CentOS 7.3安装步骤  ht ...

  9. HDU-4126 Genghis Khan the Conqueror 树形DP+MST (好题)

    题意:给出一个n个点m条边的无向边,q次询问每次询问把一条边权值增大后问新的MST是多少,输出Sum(MST)/q. 解法:一开始想的是破圈法,后来想了想应该不行,破圈法应该只能用于加边的情况而不是修 ...

  10. jQuery取值/赋值常见方法收集

    1.文本取值.赋值 $("#id").attr("value"); $("#id").val(); $("#id).attr(&q ...