您现在的位置:首页 >> Web开发 >> IntraWeb >> 内容

Intraweb XII引用JS文件

时间:2012/4/17 16:19:36 点击:

  核心提示:IW升级到12以上后,似乎引用外部的JS文件不好使了,一旦引用,就会出现IW控件无法响应事件,整个页面被锁死, 不知道其他人有没有遇到过类似的现象,反正我是经过多次实验证明引用外部JS就会出错。IW相关的资料也没有引用外部JS文件的具体方法,网上的一些方法基本上是IW10以前版本的,根本不能用。下面...

  IW升级到12以上后,似乎引用外部的JS文件不好使了,一旦引用,就会出现IW控件无法响应事件,整个页面被锁死, 不知道其他人有没有遇到过类似的现象,反正我是经过多次实验证明引用外部JS就会出错。IW相关的资料也没有引用外部JS文件的具体方法,网上的一些方法基本上是IW10以前版本的,根本不能用。下面给出自己的解决方法:

  一种就是直接把JS文件的内容通过TIWServerController.HTMLHeaders或IWForm.ExtraHeader(JavaScript)使用LoadFromFile的方法加载进去。虽然JS内的功能能用了,可是JS文件比较大、内容较多时,生成的客户端页面就会很大。

  另一种方法是本文重点介绍的(偶然翻看TMS源代码受到启发):

  主要原理就是把JS文件做成IW支持的内部资源文件。首先把JS文件做成IW能识别的内部资源,打开project->Resources and Images->Add,添加JS文件, Resource identifier写入IW_JS_MYJS(MYJS是需要命名的JS名称,一定要是大写,前面的部分是IW的命名规则,不要修改)。Resource types选RCDATA。  

  然后,打开ServerController单元,uses添加IWServerInternalFiles,在 IWServerControllerBaseCreate事件里添加如下代码: 

gInternalFiles.add('IW_JS_MYJS','/js/myjs.js');//这句话就是将资源文件标识为内部文件

HTMLHeaders.Add('<script type="text/javascript" src="$/js/myjs__'+StartUID+'.js"></script>'); 注意“__”是两个下划线。

   当然这种方法也只是能够正常调用JS而已,如果JS文件发生变化,整体程序就得重新编译,灵活性大打折扣。本文也只是起到一个抛砖引玉的作用,期待大家能有更好的办法。

作者:z_y_b_delphi 录入:z_y_b_delphi 来源:原创
共有评论 4相关评论
发表我的评论
  • 大名:
  • 内容:
本类推荐
本类固顶
  • 盒子文章(www.2ccc.com) © 2017 版权所有 All Rights Reserved.
  • 沪ICP备05001939号