JS开发桌面端应用程序教程


当前第2页 返回上一页

测试代码:


main.js文件//var定义方式var xxcanghai_1 = 1;//直接赋值方式xxcanghai_2 = 10;//挂载到window对象上window.xxcanghai_3 = 100;//挂载到global对象上global.xxcanghai_4 = 1000;

在用nw动态载入的页面中写入一下代码测试

./view/index.html文件

<script>
   console.log(xxcanghai_1);//报错
   console.log(window.xxcanghai_1);//undefined
   console.log(global.xxcanghai_1);//1

   console.log(xxcanghai_2);//报错
   console.log(window.xxcanghai_2);//undefined
   console.log(global.xxcanghai_2);//10

   console.log(xxcanghai_3);//报错
   console.log(window.xxcanghai_3);//undefined
   console.log(global.xxcanghai_3);//100

   console.log(xxcanghai_4);//报错
   console.log(window.xxcanghai_4);//undefined
   console.log(global.xxcanghai_4);//1000
</script>

结论
在动态加载的页面中,访问全局变量只能使用global.*的方式
之所以会这样是因为nw的运行环境是chromiumNodejs混合的。所以可以在网页js中执行Nodejs代码。
虽然可以但不应该!
从页面代码的责任一致性上不应该在网页代码中编写nodejs代码,遂应该将global中的对象写入每个网页的window对象中。之后页面代码再从window.*中调用

植入每个页面window中的方法

可利用nw的对package.json扩展字段的inject_js_startinject_js_end来实现。

官方说明:
inject_js_start: The injecting JavaScript code is to be executed after any files from css, but before any other DOM is constructed or any other script is run.

inject_js_end: The injecting JavaScript code is to be executed after the document object is loaded, before onload event is fired. This is mainly to be used as an option of Window.open() to inject JS in a new window.

http://docs.nwjs.io/en/latest/References/Manifest%20Format/#inject_js_start

inject_js_start字段指向本地的js文件,他可以在加载的任何页面的任何页面js执行前执行。


package.json文件:{
  "name": "blog",
  "version": "1.0.0",
  "main": "./main.html",
  "inject_js_start": "./js/inject_js_start.js?1.1.11",//设置所有页面前植入的js文件地址
  "author": "php@gmail.com",
  "license": "ISC",}

在植入的js文件中,将global中的变量赋值到当前页面window中


./js/inject_js_start.js文件://将node的global中的变量写入每个即将打开的页面的js的window对象中window["xxcanghai_1"] = global["xxcanghai_1"]

之后即可在任何nw打开的页面中通过window.xxcanghai_1来访问全局变量了。

4. nwjs主进程出现异常后不显示窗体

现象:nwjs主进程出现异常后不显示窗体,不弹出错误提示,也不会自动结束进程
原因package.json文件中的main字段为.js文件,同时此js文件出现error时会出现此问题。
解决方案package.json文件中的main字段使用.html文件,然后再载入要执行的nw主程序js文件即可。这样即使报错了也会显示出空窗口,同时也可以通过开发者工具栏查看问题原因,用户也可以关闭应用,不至于无法结束进程。

其他教程文章

使用 NW.js 将 Web 应用打包为桌面应用

以上就是JS开发桌面端应用程序教程的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

自动清理js、css文件的缓存方法

canvas跨域的解决方案介绍

es6中新的变量声明方式介绍(附代码)

移动端h5中百度地图的click事件的介绍(代码示例)

vue中怎么对事件进行防抖和节流操作?

javascript打包是什么意思

javascript实现斐波那契数列

javascript如何实现删除表格

javascript中的split方法详解

给大家分享九个 javascript 图片懒加载库

更多相关阅读请进入《javascript》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...