搜索
aardio官方社区 门户 查看主题

网页js有内存泄露是不是不适合用来做界面

发布者: 金满斗 | 发布时间: 2018-1-2 19:04| 查看数: 402| 评论数: 2|帖子模式

试着用webkit结合 layui来做界面,毕竟layui里自带的js很多。
但却换导航时间长了,就报内存错误。如图
问题.JPG

我先贴主文件吧。
  1. import win.ui;
  2. import win.ui.atom;
  3. import web.json;
  4. import thread.command;

  5. io.open();
  6. /*DSG{{*/
  7. mainForm = win.form(text="我们都是好孩子";right=951;bottom=575;border="none";mode="popup")
  8. mainForm.add()
  9. /*}}*/

  10. //导入webkit支持库
  11. import web.kit.form;
  12. import web.kit.jsFunction;
  13. import console;

  14. var atom,hwnd = mainForm.atom("D40607E2-3287-433A-98F7-E3469BCA21F1");
  15. if(!atom){
  16.         win.quitMessage();        return;
  17. }



  18. var wbKitView = web.kit.form(mainForm);//创建webkit浏览器窗口



  19. wbKitView.onDocumentReady = function(url,mainFrameJSState,frameJSState){
  20.         console.dump("按F12调试试试")
  21. }



  22. //使用external接口定义网页脚本可调用的本地函数
  23. wbKitView.external = {

  24.     aardioCall = function(str){
  25.         mainForm.msgbox(str);
  26.     };
  27.     conlog = function(obj){
  28.         var obj = web.json.strip(obj);
  29.             console.dump(obj);
  30.     }
  31.    
  32. }

  33. //打开链接时触发
  34. wbKitView.onNavigation = function(url,navigationType){
  35.         if( navigationType == 0/*_WKE_NAVIGATION_TYPE_LINKCLICK*/ ){
  36.        
  37.         }
  38.         return true;
  39. }

  40. var windows_but = /**
  41. <li class="layui-nav-item">
  42. <a id="window-min" onclick="windowCommand('min')">0</a>
  43. </li>
  44. <li class="layui-nav-item">
  45. <a id="window-max" onclick="this.innerText = windowCommand('max')?'2':'1';">1</a>
  46. </li>
  47. <li class="layui-nav-item">
  48.     <a id="window-close" onclick="windowCommand('close')">r</a>
  49. </li>
  50. **/




  51. import wsock.tcp.simpleHttpServer;
  52. wbKitView.go( wsock.tcp.simpleHttpServer.startUrl("/html/main.aardio") );
  53. wbKitView.wait();



  54. //可以使用CSS选择器获取HTML节点对象,为了保持网页的原特性,窗口开关后加
  55. wbKitView.querySelector(".footer").setAttribute("onmousedown","windowCommand('drag')");   //必须加这个,才能拖动窗口
  56. wbKitView.querySelector(".layui-header .drag").setAttribute("onmousedown","windowCommand('drag')");   //必须加这个,才能拖动窗口
  57. wbKitView.querySelector(".layui-header .layui-logo").innerText = mainForm.text;
  58. wbKitView.querySelector(".layui-header .layui-layout-right ").innerHTML = windows_but;    //加windows窗体最大最小关闭按钮




  59. //添加可拖动边框
  60. import win.ui.resizeBorder;
  61. win.ui.resizeBorder(mainForm);

  62. //添加阴影
  63. import win.ui.shadow;
  64. win.ui.shadow(mainForm);

  65. //限定最大化范围
  66. import win.ui.minmax;
  67. win.ui.minmax(mainForm);

  68. mainForm.show();
  69. win.loopMessage();
复制代码


要用工程文件才能重现问题,我把工程文件放上来。
https://pan.baidu.com/s/1slSepm1

我的是64位windows7系统。我用这个界面在导航上快速却换,却换1,20次后就报错了。

最新评论

Jacen.He 发表于 2018-1-2 20:08:30
不要遇到一点问题就是这个东西没有用,不适合做界面,世上哪个做界面的组件用了就不能出任何问题呢?!相对其他一些组件, wke算是稳定了。谁会没事拿着鼠标在JS做的页面上来回疯狂点的。任何一个浏览器控件现在或将来都会不停的重现你这样相同的问题,如果你很介意,那只能什么也不要做了。

JS的确很难做到绝对的稳定,所以electron,cef.不愿意做单进程的内核。

这些第三方开源组件,都提供了源代码,要求高的话可以自己进一步去改进,我没有许多精力去管这些,
金满斗 发表于 2018-1-2 21:35:48
谢谢。好的。

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-4-23 21:32 , Processed in 0.109405 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表