笔者在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
本文链接