|
论坛找的JS脚本类.. 调用后是用执行完毕得到的结果.. 但是..每次在主线程的时候,都获取不到内容... 应该是JS内容还没有执行完
想了各种办法 仍然无法达到要求... 怎么样能等待JS执行完毕再继续执行下边的代码- <火山程序 类型 = "通常" 版本 = 1 />
- 包 火山.样例 <注释 = "火山无名模块:">
- 类 启动类 <公开 基础类 = 安卓5无标题白色窗口 注释 = "用户主窗口封装类." 注释 = "此处设置了常用的附加清单属性,如果不需要可删除." @安卓.附加清单 = 常用窗口附加清单.全面屏
- @安卓.附加清单 = 常用附加清单.开启硬件加速 @安卓.附加清单 = 常用窗口附加清单.不改变软键盘状态>
- {
- 变量 按钮_解析JSON <类型 = 按钮 隐藏值属性 = "0" @安卓.窗口.布局 = "p_layout_horz_align = left" 内容 = "利用js解析JSON">
- 变量 编辑框_路径 <类型 = 编辑框 隐藏值属性 = "0"
- @安卓.窗口.布局 = "ctrl_order = 1\np_layout_height_type = wrap_content\np_layout_width_type = match_parent"
- 内容 = "user.address[0].postcode" 单行模式 = 真>
- 变量 编辑框_json <类型 = 编辑框 隐藏值属性 = "0"
- @安卓.窗口.布局 = "ctrl_order = 2\np_layout_height_type = p_specified\np_layout_height_value = 50\np_layout_width_type = match_parent"
- 内容 = "{ "username":"andy", "age":20, \n"info": { "tel": "123456", "cellphone": "98765"}, \n"address": [ {"city":"beijing","postcode":"222333"}, \n{"city":"newyork","postcode":"火山"} ] }">
- 变量 按钮_载入并执行 <类型 = 按钮 隐藏值属性 = "0" @安卓.窗口.布局 = "ctrl_order = 3" 内容 = "载入js并执行">
- 变量 脚本 <类型 = JS脚本类>
- 方法 通知_被创建 <公开 注释 = "火山无名模块:" @虚拟方法 = 可覆盖>
- 参数 启动信息对象 <类型 = 启动信息类>
- 参数 载入参数 <类型 = "对象类 []">
- 参数 参数数目 <类型 = 整数>
- {
- 父对象.通知_被创建 (启动信息对象, 载入参数, 参数数目)
- 脚本.初始化 (本对象) // 必须初始化后才能调用
- }
- 方法 按钮_被单击 <接收事件 类型 = 整数>
- 参数 来源对象 <类型 = 按钮 注释 = "提供事件产生的具体来源对象" 编辑时信息 = "42AA6, 0, 0, 0">
- 参数 标记值 <类型 = 整数 注释 = "用户调用"挂接事件"命令时所提供的"标记值"参数值,非此方式挂接事件则本参数值固定为0." 编辑时信息 = "42AA6, 0, 0, 0">
- {
- 如果 (来源对象 == 按钮_载入并执行)
- {
- 常量 JS代码 <类型 = 文本型
- 值 = "function Add(x, y) {\n return x+y;\n }\n function Add2(x, y) {\n return x+y;\n }\n function Add3() {\n return "火山";\n }">
- 脚本.载入JS (JS代码, 1)
- 提示信息框 ("JSON返回结果:" + 全局变量.token)
- // 这里全局变量怎么都不能及时的获取.. 试验了各种办法
- //怎么样能等待JS执行完毕返回了变量 再继续进行下边的代码
- }
- 否则 (来源对象 == 按钮_解析JSON)
- {
- //JSON解析 (编辑框_json.内容, 编辑框_路径.内容)
- //提示信息框 ("JSON返回结果:" + 全局变量.token)
- }
- 返回 (0)
- }
- 方法 JSON解析
- 参数 JSON文本 <类型 = 文本型>
- 参数 JSON路径 <类型 = 文本型>
- {
- 变量 脚本1 <类型 = 文本型 值 = "var user = @<内容1>;\nreturn @<内容2>;">
- 脚本1 = 子文本替换 (脚本1, "@<内容1>", JSON文本)
- 脚本1 = 子文本替换 (脚本1, "@<内容2>", JSON路径)
- 脚本.执行JS (脚本1, 1)
- }
- 方法 JS脚本类_执行完毕 <接收事件 类型 = 整数>
- 参数 来源对象 <类型 = JS脚本类>
- 参数 标记值 <类型 = 整数>
- 参数 所返回数据 <类型 = 文本型>
- 参数 标记 <类型 = 整数>
- {
- 如果 (来源对象 == 脚本)
- {
- 如果 (所返回数据 == "null")
- {
- 提示框 ("无返回数据")
- 返回 (0)
- }
- 如果 (标记 == 1) // 判断是否为JSON解析
- {
- 全局变量.token = 所返回数据
- // 提示信息框 ("JSON返回结果:" + 所返回数据)
- }
- 否则 (标记 == 2)
- {
- 全局变量.token = 所返回数据
- // 提示框 ("执行JS方法结果:" + 所返回数据)
- }
- }
- 返回 (0)
- }
- 方法 JS脚本类_载入JS完毕 <接收事件 类型 = 整数 折叠>
- 参数 来源对象 <类型 = JS脚本类>
- 参数 标记值 <类型 = 整数>
- 参数 标记 <类型 = 整数>
- {
- 如果 (标记 == 1) // 判断载入来源
- {
- 脚本.执行JS方法 ("Add(1,2)", 2) // 可以执行载入js中的各种写好的方法
- 脚本.执行JS方法 ("Add2(2,2)", 2)
- 脚本.执行JS方法 ("Add3()", 2)
- 来源对象.释放载入 () // 释放后将不能调用载入的方法.
- }
- 返回 (0)
- }
- }
- 类 JS脚本类 <公开 注释 = "火山无名模块:" 注释 = "用于执行加载JavaScript脚本">
- {
- 变量 浏览框1 <参考 类型 = 浏览框>
- 变量 成员执行的方法 <类型 = 文本型>
- 方法 初始化 <公开 注释 = "初始化当前对象,必须初始化后才能使用." 折叠>
- 参数 所处窗口 <类型 = 安卓窗口>
- {
- 浏览框1 = 所处窗口.创建窗口组件 (浏览框)
- 挂接事件 (浏览框1)
- }
- 方法 载入JS <公开 注释 = "准备一段JavaScript代码,载入到当前对象中,载入后可调用"执行JS方法"执行js中的各种方法." 注释 = "载入完毕后将触发"载入JS完毕"事件."
- 折叠>
- 参数 脚本内容 <类型 = 文本型 注释 = "提供完整的JavaScript代码">
- 参数 标记 <类型 = 整数 注释 = "设置载入标记,当载入完毕后可通过"载入JS完毕"事件的标记参数获取." "">
- {
- 如果 (浏览框1 != 空对象)
- {
- 浏览框1.标记 = 到文本 (标记)
- 变量 脚本1 <类型 = 文本型 值 = "<html><body><script>脚本</script></body></html>">
- 浏览框1.载入数据 (子文本替换 (脚本1, "脚本", 脚本内容), "text/html; charset=UTF-8")
- }
- }
- 方法 释放载入 <公开 注释 = "释放"载入JS"方法载入的js代码,释放后将不能执行其中的任何方法.">
- {
- 如果 (浏览框1 != 空对象)
- {
- 浏览框1.载入数据 ("")
- }
- }
- 方法 执行JS方法 <公开 注释 = "当调用了"载入JS"方法后可调用本方法执行其中的js方法." 注释 = "注意:本方法只能在"载入JS完毕"事件下才能调用.">
- 参数 要执行的方法 <类型 = 文本型 注释 = "提供js方法名,例如:getValue()">
- 参数 标记 <类型 = 整数 注释 = "当执行多个脚本时,可用于在事件中判断执行来源.">
- {
- 如果 (浏览框1 != 空对象)
- {
- 浏览框1.标记 = 到文本 (标记)
- 浏览框1.执行JS方法2 (要执行的方法)
- }
- }
- 方法 执行JS <公开 注释 = "直接执行一段JavaScript代码,本方法将触发"执行完毕"事件." 注释 = "注意:本方法并不能执行"载入JS"方法载入的js内容."
- 编辑时信息 = "2FFFD, 0, 0, 0">
- 参数 脚本内容 <类型 = 文本型 注释 = "提供JavaScript代码,譬如:return 1+1;" 编辑时信息 = "2FFFD, 0, 0, 0">
- 参数 标记 <类型 = 整数 注释 = "当执行多个脚本时,可用于在事件中判断执行来源." 编辑时信息 = "2FFFD, 0, 0, 0">
- {
- 如果 (浏览框1 != 空对象)
- {
- 浏览框1.标记 = 到文本 (标记)
- 浏览框1.执行JS方法2 ("(function() {" + 脚本内容 + "})();")
- }
- }
- 方法 执行完毕 <公开 定义事件 类型 = 整数 注释 = "执行JavaScript完毕后触发本事件." 折叠>
- 参数 所返回数据 <类型 = 文本型 注释 = "返回执行结果,无数据返回null.">
- 参数 标记 <类型 = 整数 注释 = "返回标记值">
- 方法 载入JS完毕 <公开 定义事件 类型 = 整数 注释 = "调用了"载入JS"方法后本事件将被触发." 注释 = "触发后可调用"执行JS方法"执行其中的各种JS方法.">
- 参数 标记 <类型 = 整数 注释 = "返回载入JS方法提供的标记值">
- 方法 浏览框_JS返回数据 <接收事件 类型 = 整数>
- 参数 来源对象 <类型 = 浏览框>
- 参数 标记值 <类型 = 整数>
- 参数 所返回数据 <类型 = 文本型>
- {
- 执行完毕 (所返回数据, 文本到整数 (来源对象.标记))
- 返回 (0)
- }
- 方法 浏览框_页面载入完毕 <接收事件 类型 = 整数>
- 参数 来源对象 <类型 = 浏览框>
- 参数 标记值 <类型 = 整数>
- 参数 页面地址 <类型 = 文本型>
- {
- 载入JS完毕 (文本到整数 (来源对象.标记))
- 返回 (0)
- }
- }
- 类 全局变量 <公开>
- {
- 变量 token <公开 静态 类型 = 文本型>
- #
- }
复制代码
|
|