搜索
查看: 2350|回复: 8

webkit浏览器窗口加载子HTML或aardio文件如何在子文件中取main文件的定义的变量值

[复制链接]

6

主题

15

帖子

148

积分

一级会员

Rank: 2

积分
148
发表于 2018-1-13 11:03:18 | 显示全部楼层 |阅读模式
本帖最后由 dsp2138 于 2018-1-13 11:04 编辑

webkit浏览器窗口加载子HTML或aardio文件如何在子文件中取main文件的定义的变量值

main.aardio
在此文件中定义变量
str1="hello world"
  1. import win.ui;
  2. /*DSG{{*/
  3. mainForm = win.form(text="webkit浏览器支持库";right=759;bottom=469;border="none";mode="popup")
  4. mainForm.add()
  5. /*}}*/

  6. //导入webkit支持库
  7. import web.kit.form;
  8. import web.kit.jsFunction;
  9. var wbKitView = web.kit.form(mainForm);//创建webkit浏览器窗口
  10. var str1="hello world";
  11. //使用external接口定义网页脚本可调用的本地函数
  12. wbKitView.external = {

  13.     aardioCall = function(str){
  14.         mainForm.msgbox(str);
  15.     };
  16. }

  17. //打开链接时触发
  18. wbKitView.onNavigation = function(url,navigationType){
  19.         if( navigationType == 0/*_WKE_NAVIGATION_TYPE_LINKCLICK*/ ){
  20.        
  21.         }
  22.         return true;
  23. }

  24. import wsock.tcp.simpleHttpServer;
  25. wbKitView.go( wsock.tcp.simpleHttpServer.startUrl("/html/index.aardio") );

  26. //可以使用CSS选择器获取HTML节点对象
  27. wbKitView.querySelector("#header .title-bar .title").innerText = "我 的 软 件";

  28. //添加可拖动边框
  29. import win.ui.resizeBorder;
  30. win.ui.resizeBorder(mainForm);

  31. //添加阴影
  32. import win.ui.shadow;
  33. win.ui.shadow(mainForm);

  34. //限定最大化范围
  35. import win.ui.minmax;
  36. win.ui.minmax(mainForm);

  37. mainForm.show();
  38. win.loopMessage();
复制代码


在html目录下的index.aardio中调用模板语法
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.         <meta charset="UTF-8">
  5.         <title>index</title>
  6. </head>
  7. <body>
  8.         <?
  9.                 print(str1);
  10.         ?>
  11. </body>
  12. </html>
复制代码

这样是无法获取到main.aardio文件中的变量的。
1、在index.aardio文件中如何调用main.aardio文件中的str1变量。
2、main.aardio已经创建了wbKitView,在index.aardio中还需要再创建wbKitView窗体吗?如果不用,如何在模板语法中使用web.kit库中的函数
http://bbs.aardio.com/forum.php?mod=viewthread&tid=13317&highlight=%C4%A3%B0%E5
,在这个贴子中大致提到了这个问题。但还是有不少疑问。
回复

使用道具 举报

42

主题

128

帖子

924

积分

荣誉会员

Rank: 8Rank: 8

积分
924
发表于 2018-1-13 12:24:04 | 显示全部楼层
import win.ui;
/*DSG{{*/
var winform = win.form(text="webkit浏览器简单示例";right=1123;bottom=570)
/*}}*/

import web.kit.form;  
var wbKitView= web.kit.form(winform);

var str1="hello world";

import wsock.tcp.simpleHttpServer;
wbKitView.go( wsock.tcp.simpleHttpServer.startUrl(
"/res/html/main.aardio?str1=" ++ str1) );

winform.show()
win.loopMessage();

这样接收参数
<?= ..request.get["str1"] ?>

回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2018-1-13 13:53:50 | 显示全部楼层
如果用了simpleHttpServer,
就是cad说的,完全就跟写网站一样,get,post传参数。
因为 simpleHttpServer是多线程,用 thread.set也可以。

如果是 wsock.tcp.asynHttpServer ,因为他们是同一个线程,可以直接访问主窗体对象 mainForm
回复

使用道具 举报

6

主题

15

帖子

148

积分

一级会员

Rank: 2

积分
148
 楼主| 发表于 2018-1-13 16:47:33 | 显示全部楼层
Jacen.He 发表于 2018-1-13 13:53
如果用了simpleHttpServer,
就是cad说的,完全就跟写网站一样,get,post传参数。
因为 simpleHttpServer ...

谢谢Jacen!
另外还有个webkit中的问题
  1. <input type="text" name="lastname" value="Mouse">
复制代码

像这样的输入框,为啥不能输入,不能获取输入焦点?
设置了event.stopPropagation,也是如此,求教
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2018-1-13 16:54:31 | 显示全部楼层
dsp2138 发表于 2018-1-13 16:47
谢谢Jacen!
另外还有个webkit中的问题

试了可以输入,注意提问发可重现问题的代码,描述清楚
回复

使用道具 举报

6

主题

15

帖子

148

积分

一级会员

Rank: 2

积分
148
 楼主| 发表于 2018-1-13 17:28:19 | 显示全部楼层
或许没描述清楚
是这样的
html目录下的main.aardio中插入<input type="text" name="lastname" value="Mouse">
就是创建新的webkit工程也是如此。单独运行html/mian.arrdio这样input是可以输入的
但运行主程序main.aardio是不能输入的。
我这里是win10企业版
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2018-1-13 23:28:19 | 显示全部楼层
dsp2138 发表于 2018-1-13 17:28
或许没描述清楚
是这样的
html目录下的main.aardio中插入


提供可重现问题的代码节省的是你自己的时间,
遇到类似的问题,请先检查CSS,HTML中的问题。最后再找浏览器或者操作系统的问题。

你这里是CSS中的  -webkit-user-select: none;  就导致的,
如果有输入框,请修改为

*:not(input,textarea) {
    -webkit-user-select: none;
}
回复

使用道具 举报

6

主题

15

帖子

148

积分

一级会员

Rank: 2

积分
148
 楼主| 发表于 2018-1-13 23:52:29 | 显示全部楼层
Jacen.He 发表于 2018-1-13 23:28
提供可重现问题的代码节省的是你自己的时间,
遇到类似的问题,请先检查CSS,HTML中的问题。最后再找浏 ...


百度到了这个问题,谢谢Jacen教诲!
还是知识点欠缺了!
-------------------
http://www.css88.com/book/css/properties/user-interface/user-select.htm
估计还有其他同学遇到了这个问题。特贴出css3的user-select让大家学习。
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2018-1-17 07:07:53 | 显示全部楼层
dsp2138 发表于 2018-1-13 23:52
百度到了这个问题,谢谢Jacen教诲!
还是知识点欠缺了!
-------------------
你说的很对,其他人可能也会遇到这个困扰,
工程范例里的代码我已经修改了,感谢你发现问题,
我经常提醒大家尽可能提供可以重现问题的信息 - 是希望可以提升效率节省双方的时间,感谢理解。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2018-11-17 18:33 , Processed in 0.062500 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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