笔者在APL(抽象编程语言)平台中, 已经完成把 APL平台的APIs桥接到 javascript中. 因此目前写 本地的HTML页面有两种方式:
1. 通过本地的Web服务器方式: aplx文件方式, 这种写法类似php之类, 笔者在此不再叙述.
2. 以 file协议 打开HTML文件:
这种方式在 WebBrowser控件中是不能支持到 url地址带参数. CEF中暂时没研究这个问题.
笔者目前重心在方式二, 以使本地应用能够 使用Web+APL平台开发, 扩展本地Web应用的能力. 因此考虑file协议带参数的解决方案, 大致描述如下:
1. 以SCADA画面封装 HTML积木 来实现 带初始化参数.
2. SCADA页面具备 地址中带参数能力.
3. SCADA页面的 初始化脚本中, 检查是否带 参数.
4. 如果Scada页面有初始化参数, 则在HTML积木中NavigateComplete后, 调用HTML的javascript传递参数.
具体应用举例:
本地目录的 幻灯片播放为例子: scada:///aplPic/aplPic.sca?$initDir=E:/aplPublic/pic/电影电视
效果:
代码解析:
1. SCADA中代码片段:
function initPage() { extern $$scadaWnd ; // 启动初始化后, 检查 sca的扩展参数. $$scadaWnd->setTimeout( 0, "$$page->checkInitArgs();" ) ; } /// 检查初始化参数. function checkInitArgs() { extern $initDir ; extern $brickHtml ; extern $$scadaWnd ; // 如果有定义初始化目录. if( isString($initDir)==true ) { // 如果doc已经OK, 则执行脚本. if( $brickHtml->getNavigateCompleteStatus()==true ) { $initDir = getAplFullPath( $initDir ) ; $this->setPath($initDir) ; } else { // 否则延迟检查. $$scadaWnd->setTimeout( 50, "$$page->checkInitArgs();" ) ; } } } /// 设置路径. function setPath( $path ) { extern $brickHtml ; $script = "_page.setPath( \"{$path}\" ) ; " ; $script = replaceSubStrings( $script, "{$path}", $path ) ; $brickHtml->executeScript( $script ) ; }
2. HTML中相关代码片段.
/// 生成类: PagePic function genPagePic() { /// 选择路径. PagePic.prototype.setPath = function( path ) { this._path = APL_getAplFullPath( path, "" ) ; clearInterval(this._timer); _page.readFiles(this._path) ; this.randSelectPic(); this._timer=setInterval( randSelectPic, 5000 ) ; } }
笔者虽然觉得这样写比较罗嗦一点, 但暂时还没找到更简洁的解决方案. 当然这个仅仅是限于本地Web开发才有这个需求, 这个是APL平台的目标.
目前APL(抽象编程语言)平台还在alpha开发阶段, 作者希望更多的开发人员能够了解和喜欢APL(抽象编程语言)平台, 如果你想了解更多APL(抽象编程语言)平台的信息和体验一下
APL(抽象编程语言)平台中的开发和应用, 请在此文章后留下您的电邮, 作者会把此包发给您, 多谢!
更多APL(抽象编程语言)平台内容, 请参见作者博客:
smartfish_liu - 博客园
http://www.cnblogs.com/smartfishliu/
paul
2013-6-6