本地HTML文件 带参数方案

        笔者在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

posted on 2013-06-06 12:26  smartfish_liu  阅读(2840)  评论(1编辑  收藏  举报

导航