??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产精品综合一区在线,亚洲欧洲免费视频,亚洲精品成人区在线观看http://m.tkk7.com/jindw/category/22725.htmlxQ?lt;a >JSI 无R入的脚本理框架</a>zh-cnSun, 14 Oct 2007 20:31:10 GMTSun, 14 Oct 2007 20:31:10 GMT60q动曲线研究(~动效果)http://m.tkk7.com/jindw/archive/2007/10/14/152793.html金大?/dc:creator>金大?/author>Sun, 14 Oct 2007 13:14:00 GMThttp://m.tkk7.com/jindw/archive/2007/10/14/152793.htmlhttp://m.tkk7.com/jindw/comments/152793.htmlhttp://m.tkk7.com/jindw/archive/2007/10/14/152793.html#Feedback0http://m.tkk7.com/jindw/comments/commentRss/152793.htmlhttp://m.tkk7.com/jindw/services/trackbacks/152793.html阅读全文

]]>
JSA在线压羃E序发布http://m.tkk7.com/jindw/archive/2007/08/22/138646.html金大?/dc:creator>金大?/author>Wed, 22 Aug 2007 08:28:00 GMThttp://m.tkk7.com/jindw/archive/2007/08/22/138646.htmlhttp://m.tkk7.com/jindw/comments/138646.htmlhttp://m.tkk7.com/jindw/archive/2007/08/22/138646.html#Feedback4http://m.tkk7.com/jindw/comments/commentRss/138646.htmlhttp://m.tkk7.com/jindw/services/trackbacks/138646.htmlJSAq个压羃工具Q是java~写的,需要安装javaq行环境?
q多给一些非javE序员带来点不便?/p>

现在我们发布servlet在线压羃版本。无需安装Q在U压~,l非Java用户一个更加便L使用方式?/p>

目主页Q?a target="blank">http://www.xidea.org/project/jsa/
现在的在U压~服务器?a target="blank">Seaprince提供?
Ƣ迎更多有空闲服务器资源的朋友安装JSA在线服务Q我在jsa目主页提供链接Q方便大家用?/p>

仍外Qؓ了避免服务器资源被恶意滥用,我们默认启用了图片验证,服务频率限制{保护设|?
l用户带来些不便Q敬误解?/p>


]]>
脚本装蝲时一个似乎应该有所重视的问题?http://m.tkk7.com/jindw/archive/2007/08/12/136244.html金大?/dc:creator>金大?/author>Sun, 12 Aug 2007 14:22:00 GMThttp://m.tkk7.com/jindw/archive/2007/08/12/136244.htmlhttp://m.tkk7.com/jindw/comments/136244.htmlhttp://m.tkk7.com/jindw/archive/2007/08/12/136244.html#Feedback0http://m.tkk7.com/jindw/comments/commentRss/136244.htmlhttp://m.tkk7.com/jindw/services/trackbacks/136244.html今天无意间打开了一个CSDN上的个hblogQ发现窗口无法拖动,Firefox的标{N也无法切换?/p>

查看代码Q?

<script type="text/javascript">Include("Csdn.Blog.UserOnline");</script>  
<script type="text/javascript">Include("Csdn.Blog.ShowmeDataDeal");</script>

 

看到Include函数Q马上可以想刎ͼ它很可能使用了动态包含脚本的设计?
//http://blog.csdn.net/scripts/jsframework.js  
window.Include=function(namespace, path)  
{  
   ..  
};  
S.load
=function(namespace, path)  
{  
     
}  

仔细阅读q两个函C码,发现它是通过XMLHttpRequest对象同步装蝲脚本资源的(对IEQ它采用userdata~存优化Q。而这必将D一U完全阻塞问题(q种问题我在仍外一blog上描q过Q?a target="blank">http://jindw.javaeye.com/blog/66702Q?/p>

说到d问题Q我惛_家可能会以ؓ只是一U下载gq,其实不然?/strong>
下蝲延迟不是完全dQ浏览器依然可以响应用户事g。而同步XHRhd是一U完全的d?
览器在脚本q行与事件响应共用同一个线E(我的猜测Q。Q何脚本尚在运行时Q包括被同步XHRhd的时_Q浏览器无法响应Q何用户事Ӟ无法拖放H口、切换标{、重画页面等{,像E序M一P。与普通的下蝲延迟造成的阻塞,感觉明显不同?/p>

我对q个问题可以说深有体会,起初Q在构徏JSI1的项目站Ҏ。因为网站放在sourceforge上,讉K数度不是一般的慢,几个单的例子Q浏览器p完全d好几妙钟。正是厌恶这U完全阻塞的现象Q我才开发了JSI2?/p>

事实上,现在的一堆堆js框架中,采用XHR同步装蝲资源的有不少QJSVM、dojo、a9engine、hax的piesQ其中JSVMQ? dojo都提供打包工P可能装载的脚本打包到启动文件中Q所以也可以避免XHR同步h。不q这样也失M部分动态装载的意义了?/p>

MQ我非常讨厌q种完全d现象Q认个严重媄响用户体验?
可能也有些主观因素把Q希望听听大家的看法?




]]>
JS几处怪癖的语?/title><link>http://m.tkk7.com/jindw/archive/2007/06/30/127243.html</link><dc:creator>金大?/dc:creator><author>金大?/author><pubDate>Sat, 30 Jun 2007 08:47:00 GMT</pubDate><guid>http://m.tkk7.com/jindw/archive/2007/06/30/127243.html</guid><wfw:comment>http://m.tkk7.com/jindw/comments/127243.html</wfw:comment><comments>http://m.tkk7.com/jindw/archive/2007/06/30/127243.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.tkk7.com/jindw/comments/commentRss/127243.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jindw/services/trackbacks/127243.html</trackback:ping><description><![CDATA[<p><strong>带ID的函数表辑ּQ? <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;"><strong>var</strong></span><span style="color: #000000;"><strong> fn </strong></span><span style="color: #000000;"><strong>=</strong></span><span style="color: #000000;"><strong> </strong></span><span style="color: #0000ff;"><strong>function</strong></span><span style="color: #000000;"><strong> fnid(){};  </strong></span></div> </strong></p> <script>render_code();</script> <p>按照ECMA262定义,上面q段脚本{h于: </p> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">with</span><span style="color: #000000;">({fnid:</span><span style="color: #0000ff;">null</span><span style="color: #000000;">}){  <br>  </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> fn </span><span style="color: #000000;">=</span><span style="color: #000000;"> fnid </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">function</span><span style="color: #000000;">(){};  <br>}  </span></div> <p> </p> <script>render_code();</script> <br>注意Qfnid在with外是不可见的Q但是IE没有严格遵守ECMA规范(同样的情况发生在catch语法?。在IE上相当于Q? <br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">var</span><span style="color: #000000;"> fnid </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">function</span><span style="color: #000000;">(){};  <br></span><span style="color: #0000ff;">var</span><span style="color: #000000;"> fn </span><span style="color: #000000;">=</span><span style="color: #000000;"> fnid;  </span></div> <br> <script>render_code();</script> <p>在刚刚发布的JSA1beta上,q不能处理这个问题(新版本将q周内发布)。同Ӟ鉴于q种语法在不同浏览器上表C同,q是量避免使用Q这点上Q我个hq是更喜Ƣie的方式)?/p> <p><strong>var语句Q?/strong> <br>太常用了Q但是,没有注意q是很容易出问题? <br>var 用来声明全局或函数变量,但是Q只是申明,重复x也不能置I,范围是函数或者全局I间Q位|在函数或脚本顶端,与块无关Q这些与常用高语言区别很大?/p> <p>怪癖的代? <br> </p> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">var</span><span style="color: #000000;"> vaiable </span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;  <br></span><span style="color: #0000ff;">function</span><span style="color: #000000;"> test(){  <br>   variable </span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;">别担心,不会改动全局变量vaiable  </span><span style="color: #008000;"><br></span><span style="color: #000000;">   </span><span style="color: #008000;">//</span><span style="color: #008000;">do <img src="http://m.tkk7.com/Images/dot.gif"><img src="http://m.tkk7.com/Images/dot.gif">..  </span><span style="color: #008000;"><br></span><span style="color: #000000;">   </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> vaiable;</span><span style="color: #008000;">//</span><span style="color: #008000;">变量x无顺序(一律置ӞQ只是赋值有序?nbsp; </span><span style="color: #008000;"><br></span><span style="color: #000000;">}  </span></div> <p> </p> <script>render_code();</script> <p>常见错误有: <br> </p> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">var</span><span style="color: #000000;"> flag;</span><span style="color: #008000;">//</span><span style="color: #008000;">q里可能有hQ包括我自己Q喜Ƣ自做聪明的利用一下变量的初始值undefined  </span><span style="color: #008000;"><br></span><span style="color: #0000ff;">while</span><span style="color: #000000;">(!flag){</span><span style="color: #008000;">//</span><span style="color: #008000;">没准那个角落里面已经l当前函数内同名变量l赋g惨?nbsp; </span><span style="color: #008000;"><br></span><span style="color: #000000;">  </span><span style="color: #008000;">//</span><span style="color: #008000;"><img src="http://m.tkk7.com/Images/dot.gif">..  </span><span style="color: #008000;"><br></span><span style="color: #000000;">}  </span></div> <p> </p> <script>render_code();</script> <img src ="http://m.tkk7.com/jindw/aggbug/127243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jindw/" target="_blank">金大?/a> 2007-06-30 16:47 <a href="http://m.tkk7.com/jindw/archive/2007/06/30/127243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]云想衣裳花想容-QJSIlg模型介绍Q二Q?/title><link>http://m.tkk7.com/jindw/archive/2007/06/27/126498.html</link><dc:creator>金大?/dc:creator><author>金大?/author><pubDate>Wed, 27 Jun 2007 02:35:00 GMT</pubDate><guid>http://m.tkk7.com/jindw/archive/2007/06/27/126498.html</guid><wfw:comment>http://m.tkk7.com/jindw/comments/126498.html</wfw:comment><comments>http://m.tkk7.com/jindw/archive/2007/06/27/126498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/jindw/comments/commentRss/126498.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jindw/services/trackbacks/126498.html</trackback:ping><description><![CDATA[<h1>装饰引擎介:</h1> pȝ默认的装饰引擎ؓQorg.xidea.decorator.DecoratorEngine?br> JSI装蝲后,做如下操作Q?br> <ol> <li>判断有无装饰器命名空间声明(xmlns:d= "http://www.xidea.org/taglib/decorator"Q?/li> <li>若有Q将在文档装载结束后Q启动装饰引擎,初始化当前可用的装饰提供者表。(装饰提供者是一个JavaScript包,在注册这U装饰包时可同时指定他的别名Q别?表示默认包)</li> <li>遍历当前文档Q凡是该命名I间的节点,都被看作需要装饰的元素。若当前文档存在装饰元素Q启用遮|(x效果Q,面不可操作(仍可查阅Q?/li> <li>查找装饰元素对应的装饰类Q通过tagName判断cdQ,采用异步方式动态装载这些装饰器c(不会装蝲到全局I间Q,q更新当前进度信息,同时讄装饰器之间的关系Qparent,childrenQ?/li> <li>以深度遍历的方式遍历q些节点Q注册组Ӟ以后可以通过$JSI.getComponent函数获取装饰器对象)Q依ơ执行他们的before操作Q和decorate操作?/li> <li>完成装饰Q取消遮|,面q入可用状态?/li> </ol> <h1>装饰器规范简介:</h1> 装饰器指的是所有拥有decorate成员Ҏ的类。一般来_可将一l装饰器归ؓ同一个包中(太复杂的装饰器,可将具体逻辑攄在其他包中)Q能后在配置文g中定义装饰包?br> scripts/config.js   $JSI.addDecoratorProvider("org.xidea.decorator","xidea","*");<br> <br> 装饰器类包含两个Ҏbefore、docorate分别在遍历前Q子节点未装饎ͼ和遍历后Q子节点装饰完成Q调用?br> <br> 同时Q装饰引擎遍历时q将注入如下三个属性:<br> <ol> <li>parentQ父装饰?/li> <li>childrenQ子装饰器集?/li> <li>attributesQ装饰器属性集对象Q只有一个成员函敎ͼget(attrName)  Q?/li> </ol> <h1>JSI现有装饰器集合简?/h1> 目前JSI2最高版?.0预览?(2007-04-16)包含如下装饰器:<br> <ol> <li>DatePicker<br> 日期选择控gQ参照xul datepicker标签Q支持弹出方?默认?type='pop')Q和内嵌?type='grid')</li> <li>Editor<br> ~辑器控Ӟ参照xul editor标签</li> <li>Spinner<br> Spinner控gQwindow旉日期理中,q䆾调节的控ӞQ参照backbase ?Spinner标签</li> <li>TabBox、Tabs、Tab、TabPanels、TabPanel<br> TabBox(标签?控gQ参照xul tabbox标签</li> <li> Code<br> 代码语法高亮昄控gQ参照SyntaxHighlighter的显C风?/li> <li>Include<br> 片断包含标签Q支持xpath选取文档片断Q支持xslt转换<br> </li> </ol> <br> q些装饰器的演示见:<br><a > http://www.xidea.org/project/jsi/decorator/index.html</a><br> <br> 目前JSI自带的装饰器不够丰富Q而且都还是初U阶D,不够完善。现在发布的q些装饰器,主要是ؓ了演CJSI的工作方式,~码风格Q希望能吸引W三方团队、公司在q个基础上开发出自己的更加实用的装饰器集合?br> <br> JSI及其装饰引擎采用LGPL协议。可以商业应用,当能Q更希望能开源?br> <br> 目前我一Z力,开发一套完整的装饰器,需时日Q这ơ将q个半成品拿出来演示Q主要是Z展示一下jsd的风|希望能吸引其他开发者,共同参与q个工程Q有兴趣丰富JS自带I装饰器集合的|友Q请msn与我联系Qjindw◎xidea。org<img src ="http://m.tkk7.com/jindw/aggbug/126498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jindw/" target="_blank">金大?/a> 2007-06-27 10:35 <a href="http://m.tkk7.com/jindw/archive/2007/06/27/126498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> [导入]云想衣裳花想容-QJSIlg模型介绍Q一Q?/title><link>http://m.tkk7.com/jindw/archive/2007/06/27/126492.html</link><dc:creator>金大?/dc:creator><author>金大?/author><pubDate>Wed, 27 Jun 2007 02:24:00 GMT</pubDate><guid>http://m.tkk7.com/jindw/archive/2007/06/27/126492.html</guid><wfw:comment>http://m.tkk7.com/jindw/comments/126492.html</wfw:comment><comments>http://m.tkk7.com/jindw/archive/2007/06/27/126492.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/jindw/comments/commentRss/126492.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jindw/services/trackbacks/126492.html</trackback:ping><description><![CDATA[JSIlg模型是一U用来装饰简单html元素的框Ӟ使用单的xml标记Q标识其装饰行ؓQ比如将一个普通的input装饰成一个日期输入控Ӟ一 个html ul标记装饰成菜单或树,一个textarea装饰成一个代码语法高亮显C区域,或一个wysiwyg html~辑器?br> JSI启动后将自动查decorator标记Q构建层ơ结构,自动做相关类的寻找、导入和装饰操作Q实现零脚本代码的web富客L~程?br> <br> <h2>代码CZQ?/h2> <ol> <li>日期选择?(DatePicker):<br> <br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"> </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:datepicker</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>  </span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="test2"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:datepicker</span><span style="color: #0000ff;">></span><span style="color: #000000;">   </span></div> <br> </li> <li>~辑器示?(Editor):<br> <br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"> </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:editor</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>  </span><span style="color: #0000ff;"><</span><span style="color: #800000;">textarea </span><span style="color: #ff0000;">name</span><span style="color: #0000ff;">='editorText'</span><span style="color: #0000ff;">></span><span style="color: #000000;">This is some </span><span style="color: #0000ff;"><</span><span style="color: #800000;">strong</span><span style="color: #0000ff;">></span><span style="color: #000000;">sample text</span><span style="color: #0000ff;"></</span><span style="color: #800000;">strong</span><span style="color: #0000ff;">></span><span style="color: #000000;">. You are using </span><span style="color: #0000ff;"><</span><span style="color: #800000;">a  <br>    </span><span style="color: #ff0000;">href</span><span style="color: #0000ff;">="http://www.fckeditor.net/"</span><span style="color: #0000ff;">></span><span style="color: #000000;">FCKeditor</span><span style="color: #0000ff;"></</span><span style="color: #800000;">a</span><span style="color: #0000ff;">></span><span style="color: #000000;">.</span><span style="color: #0000ff;"></</span><span style="color: #800000;">textarea</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:editor</span><span style="color: #0000ff;">></span><span style="color: #000000;">   </span></div> <br> </li> <li>Spinner控gQSpinner cMwindow旉日期理中,q䆾调节的控Ӟ:<br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"> </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:spinner </span><span style="color: #ff0000;">start</span><span style="color: #0000ff;">='0' </span><span style="color: #ff0000;">end</span><span style="color: #0000ff;">='8' </span><span style="color: #ff0000;">step</span><span style="color: #0000ff;">='2'</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>  </span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="test2"</span><span style="color: #ff0000;"> value</span><span style="color: #0000ff;">='0' </span><span style="color: #0000ff;">/></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:spinner</span><span style="color: #0000ff;">></span><span style="color: #000000;">   </span></div> <br> </li> <li>客户端包?Include):<br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"> </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:include </span><span style="color: #ff0000;">url</span><span style="color: #0000ff;">='menu.xml' </span><span style="color: #ff0000;">xslt</span><span style="color: #0000ff;">="menu.xsl"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">d:include</span><span style="color: #0000ff;">></span><span style="color: #000000;">    </span></div> <br> </li> <li>代码语法高亮昄控g(Code):<br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"> </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:code </span><span style="color: #ff0000;">language</span><span style="color: #0000ff;">="js"</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br> </span><span style="color: #0000ff;"><</span><span style="color: #800000;">textarea</span><span style="color: #0000ff;">></span><span style="color: #000000;">alert(‘Hello World’)</span><span style="color: #0000ff;"></</span><span style="color: #800000;">textarea</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:code</span><span style="color: #0000ff;">></span><span style="color: #000000;">   </span></div> <br> </li> <li>标签|?TabBox参照xul tabbox标签):<br> <br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"> </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tabbox</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>  </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tabs</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tab</span><span style="color: #0000ff;">></span><span style="color: #000000;">tab1</span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tab</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tab</span><span style="color: #0000ff;">></span><span style="color: #000000;">tab2</span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tab</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tab</span><span style="color: #0000ff;">></span><span style="color: #000000;">tab3</span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tab</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>  </span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tabs</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>  </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tabpanels</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tabpanel</span><span style="color: #0000ff;">></span><span style="color: #000000;">content1</span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tabpanel</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tabpanel</span><span style="color: #0000ff;">></span><span style="color: #000000;">content2</span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tabpanel</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tabpanel</span><span style="color: #0000ff;">></span><span style="color: #000000;">content3</span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tabpanel</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>  </span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tabpanels</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tabbox</span><span style="color: #0000ff;">></span><span style="color: #000000;">   </span></div> <br> <br> </li> <li> l合CZ:</li> </ol> 来一个复杂一点的完整的例?以日期选择控g的演C页面ؓ?br> 面上有: 标签装饰器QTabBox….Q、源代码高亮昄装饰器(CodeQ、日期选择装饰器(DatePickerQ、包含装饰器QIncludeQ?br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;"><?</span><span style="color: #ff00ff;">xml version="1.0" encoding="utf-8"</span><span style="color: #0000ff;">?></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"><!</span><span style="color: #ff00ff;">DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"><</span><span style="color: #800000;">html </span><span style="color: #ff0000;">xmlns</span><span style="color: #0000ff;">="http://www.w3.org/1999/xhtml"</span><span style="color: #ff0000;">  <br>  xmlns:d</span><span style="color: #0000ff;">="http://www.xidea.org/taglib/decorator"</span><span style="color: #ff0000;"> xml:lang</span><span style="color: #0000ff;">="zh_CN"</span><span style="color: #ff0000;">  <br>  lang</span><span style="color: #0000ff;">="zh_CN"</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"><</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"><</span><span style="color: #800000;">script </span><span style="color: #ff0000;">src</span><span style="color: #0000ff;">="../scripts/boot.js"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">script</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"><</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span><span style="color: #000000;">DatePicker CZ</span><span style="color: #0000ff;"></</span><span style="color: #800000;">title</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"></</span><span style="color: #800000;">head</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"><</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"><</span><span style="color: #800000;">h2</span><span style="color: #0000ff;">></span><span style="color: #000000;">DatePicker CZ</span><span style="color: #0000ff;"></</span><span style="color: #800000;">h2</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #008000;"><!--</span><span style="color: #008000;"> 开始标{N装饰?nbsp;</span><span style="color: #008000;">--></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tabbox</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>  </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tabs</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tab</span><span style="color: #0000ff;">></span><span style="color: #000000;">效果</span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tab</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tab</span><span style="color: #0000ff;">></span><span style="color: #000000;">代码</span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tab</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>  </span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tabs</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>  </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tabpanels</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tabpanel</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>      </span><span style="color: #008000;"><!--</span><span style="color: #008000;"> 开始日期装饰器(内嵌? </span><span style="color: #008000;">--></span><span style="color: #000000;">  <br>      </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:datepicker </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">='grid'</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>        </span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="test1"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/></span><span style="color: #000000;">  <br>      </span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:datepicker</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>      </span><span style="color: #008000;"><!--</span><span style="color: #008000;"> 开始日期装饰器(弹出? </span><span style="color: #008000;">--></span><span style="color: #000000;">  <br>      </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:datepicker</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>        </span><span style="color: #0000ff;"><</span><span style="color: #800000;">input </span><span style="color: #ff0000;">type</span><span style="color: #0000ff;">="text"</span><span style="color: #ff0000;"> name</span><span style="color: #0000ff;">="test2"</span><span style="color: #ff0000;"> </span><span style="color: #0000ff;">/></span><span style="color: #000000;">  <br>      </span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:datepicker</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tabpanel</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:tabpanel</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>      </span><span style="color: #008000;"><!--</span><span style="color: #008000;"> 开始代码高亮显C?nbsp;</span><span style="color: #008000;">--></span><span style="color: #000000;">  <br>      </span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:code </span><span style="color: #ff0000;">language</span><span style="color: #0000ff;">="xml"</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>        </span><span style="color: #0000ff;"><</span><span style="color: #800000;">textarea</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>      </span><span style="color: #ff0000;">&lt;</span><span style="color: #000000;">!-- 开始日期装饰器(内嵌? --</span><span style="color: #ff0000;">&gt;</span><span style="color: #000000;">  <br>      </span><span style="color: #ff0000;">&lt;</span><span style="color: #000000;">d:datepicker type='grid'</span><span style="color: #ff0000;">&gt;</span><span style="color: #000000;">  <br>        </span><span style="color: #ff0000;">&lt;</span><span style="color: #000000;">input type="text" name="test1" /</span><span style="color: #ff0000;">&gt;</span><span style="color: #000000;">  <br>      </span><span style="color: #ff0000;">&lt;</span><span style="color: #000000;">/d:datepicker</span><span style="color: #ff0000;">&gt;</span><span style="color: #000000;">  <br>      </span><span style="color: #ff0000;">&lt;</span><span style="color: #000000;">!-- 开始日期装饰器(弹出? --</span><span style="color: #ff0000;">&gt;</span><span style="color: #000000;">  <br>      </span><span style="color: #ff0000;">&lt;</span><span style="color: #000000;">d:datepicker</span><span style="color: #ff0000;">&gt;</span><span style="color: #000000;">  <br>        </span><span style="color: #ff0000;">&lt;</span><span style="color: #000000;">input type="text" name="test2" /</span><span style="color: #ff0000;">&gt;</span><span style="color: #000000;">  <br>      </span><span style="color: #ff0000;">&lt;</span><span style="color: #000000;">/d:datepicker</span><span style="color: #ff0000;">&gt;</span><span style="color: #0000ff;"></</span><span style="color: #800000;">textarea</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>      </span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:code</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>    </span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tabpanel</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br>  </span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tabpanels</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"></</span><span style="color: #800000;">d:tabbox</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"><</span><span style="color: #800000;">select </span><span style="color: #ff0000;">style</span><span style="color: #0000ff;">="margin-left:120px"</span><span style="color: #0000ff;">><</span><span style="color: #800000;">option</span><span style="color: #0000ff;">></span><span style="color: #000000;">弹出的datepicker 可覆盖IE select</span><span style="color: #0000ff;"></</span><span style="color: #800000;">option</span><span style="color: #0000ff;">></</span><span style="color: #800000;">select</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"><</span><span style="color: #800000;">hr </span><span style="color: #0000ff;">/></span><span style="color: #000000;">  <br></span><span style="color: #008000;"><!--</span><span style="color: #008000;"> 开始Include装饰?包含装饰器菜?nbsp;</span><span style="color: #008000;">--></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"><</span><span style="color: #800000;">d:include </span><span style="color: #ff0000;">url</span><span style="color: #0000ff;">='menu.xml' </span><span style="color: #ff0000;">xslt</span><span style="color: #0000ff;">="menu.xsl"</span><span style="color: #0000ff;">></</span><span style="color: #800000;">d:include</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"></</span><span style="color: #800000;">body</span><span style="color: #0000ff;">></span><span style="color: #000000;">  <br></span><span style="color: #0000ff;"></</span><span style="color: #800000;">html</span><span style="color: #0000ff;">></span><span style="color: #000000;"> </span></div> <br><span></span> <div id="isaigak" class="dp-highlighter"> </div> <br> <br> <h2> 装饰l果Q?/h2> <br> <img src="http://m.tkk7.com/images/blogjava_net/jindw/dp.JPG" alt=""><br> <br> <br> <br> <font color="#ff0000">云想衣裳花想容-QJSIlg模型介绍Q二Q已l发布,那里有装饰过E及其原理的介绍Q?/font><br> <a >http://www.javaeye.com/topic/71425</a><br> <h1><br> </h1><img src ="http://m.tkk7.com/jindw/aggbug/126492.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jindw/" target="_blank">金大?/a> 2007-06-27 10:24 <a href="http://m.tkk7.com/jindw/archive/2007/06/27/126492.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入] 百花齐放 日月同辉――采用JSI解决不同cd间的冲突 http://m.tkk7.com/jindw/archive/2007/06/26/126241.html金大?/dc:creator>金大?/author>Mon, 25 Jun 2007 23:46:00 GMThttp://m.tkk7.com/jindw/archive/2007/06/26/126241.htmlhttp://m.tkk7.com/jindw/comments/126241.htmlhttp://m.tkk7.com/jindw/archive/2007/06/26/126241.html#Feedback0http://m.tkk7.com/jindw/comments/commentRss/126241.htmlhttp://m.tkk7.com/jindw/services/trackbacks/126241.html众所周知Q?/span> Scriptaculous所依赖?/span>Prototype库与jQuery存在冲突。所以同时用比较困难?/span>

JSI针对每一个装载的脚本都有完全独立的执行上下文。所以这个问题能?/span>JSI上彻底解冟?/span>

下面的例子,我们在同一个页面上同时使用Scriptaculous?/span> jQuery cd。证实一?/span>JSI隔离冲突功能?/span>

CZ面Q?/span>hello-jquery-aculo.htmlQ:

<html> 
<head> 
<title>Hello jQuery And Scriptaculous</title> 
<!-- 加入引导脚本 --> 
<script src="../scripts/boot.js"></script> 
<script> 
//导入jQuery  
$import(
"org.jquery.$"); 
//导入Scriptaculous  
$import(
"us.aculo.script.Effect");  
 
  
$(document).ready(
function(){ 
  
//使用jQueryd一D问候语 
  $(
"<p id='helloBox' style='background:#0F0;text-align:center;font-size:40px;cursor:pointer;'>Hello jQuery And Scriptaculous</p>")       .appendTo('body');  
  $('#helloBox').ready(
function(){  
   
//使用Scriptaculous高亮昄一下刚才添加的内容  
    new Effect.Highlight('helloBox');  
  }).click(
function(){  
   
//当用户单击该内容后用jQuery实现渐出  
    $('#helloBox').fadeOut();  
  });  
 });  
</script>  
</head>    
<body>    
<p>文档装蝲后,jQuery在后面d一D问候语Qƈ使用Scriptaculous高亮昄QHighlightQ;在鼠标点d在用jQuery渐出QfadeOutQ?/span></p>  
</body>  
</html>  



]]>
[导入] L癑ַ 有容乃大――采用JSI装、集成第三方cd http://m.tkk7.com/jindw/archive/2007/06/25/126038.html金大?/dc:creator>金大?/author>Mon, 25 Jun 2007 02:14:00 GMThttp://m.tkk7.com/jindw/archive/2007/06/25/126038.htmlhttp://m.tkk7.com/jindw/comments/126038.htmlhttp://m.tkk7.com/jindw/archive/2007/06/25/126038.html#Feedback0http://m.tkk7.com/jindw/comments/commentRss/126038.htmlhttp://m.tkk7.com/jindw/services/trackbacks/126038.html
JSI暂时不大编写丰富的公共APIQ但是我们可以集成其他成熟的cdQ同旉M们的依赖Q隔d个脚本的执行上下文,消除命名冲突的危险?br>
q里我们详细介绍一个复杂一点的实例Q类似Windows XP文g览器左侧的滑动折叠面板(d菜单)效果?br>
我们先集成Scriptaculous EffectcdQƈ且在q个基础上按我个人的习惯对一个面板折叠效果做一个简单的装Q展C框架的cd装功能?br>
1。集成ScriptaculouscdQ?br>
q里我们不做q多介绍Q详l情况请参考集成实战;我们发布的版本中已经把Scriptaculous攄于us.aculo.script包中Q您可以把这些作为系l内|的cd使用?br>
2。编写我们的折叠面板函数Qexample/effect.jsQ:
/*
 * 滑动面板实现. 
 * 当指定元素可见时Q将其第一个子元素向上滑动臛_全被遮掩Q折叠)?nbsp;
 * 当指定元素不可见Ӟ其W一个子元素向下滑动臛_全显C(展开Q?nbsp;
 
*/  
function slidePanel(panel){  
  panel 
= $(panel);  
  
if(panel.style.display=='none'){  
    
//调用Scriptaculous Effect的具体滑动展开实现  
    new Effect.SlideDown(panel);  
  }
else{  
    
//调用Scriptaculous Effect的具体滑动闭合实?nbsp; 
    new Effect.SlideUp(panel);  
  }  
}  

3。编写包定义脚本Qexample/__$package.jsQ:
//dslidePanelQ滑动面板控Ӟ函数  
this.addScript("effect.js","slidePanel",null);  
//leffect.js脚本d对us.aculo.script包中effects.js脚本的装载后依赖this.addScriptDependence("effect.js",  
"us/aculo/script/effects.js",false);

4。在|页上运用上面的cdQ?br>
<html>  
  
<head>   
  
<title>重用aculo Effect脚本实例</title>  
  
<link rel="stylesheet" type="text/css" href="/styles/default.css" />  
  
<script src="/scripts/boot.js"></script>  
  
<script>  
    $import(
"example.slidePanel");  
  
</script>  
  
</head>  
  
<body>  
    
<div class="menu_header"  
        onclick
="slidePanel('menu_block1')">  
        面板 1  
    
</div>  
    
<div class="menu_block" id="menu_block1">  
      
<ul>  
        
<li>text1</li>  
        
<li>text2</li>  
        
<li>text3</li>  
      
</ul>  
    
</div>  
</body>  
</html> 

onclick="slidePanel('menu_block1')"q个事g函数在我们点击面板标题时触发,能后会调用Scriptaculous Effect的具体实现去实现我们需要的滑动折叠功能?br>


 

壁立千仞 无欲则刚――控制依?/h1>
java可以随意的用第三方cdQ可是JavaScript却没那么q运Q随着cd的丰富,烦杂的依赖关pd可能的命名冲H将使得cd的发展越来越困难。程序的易用性也大打折扣?br>
命名冲突的危险无形的增加你大脑的负担Q随着使用的类库的增加Q暴露的依赖也将随之增加Q这是复杂度陡增的极大祸根,得系l越来越复杂Q越来越难以控制。潜在的问题来多Q防不胜阌Ӏ?br>
JSI的出玎ͼ可以解决上述问题Q我们徏议类库的开发者将自己cd的依赖终l在自己手中Q避免依赖扩散,以提高类库的易用性?br>
同样使用上面的例子,假如我们x开JSIQ实现同L功能Q那我们的页面代码将是(cd代码不用改动Q:

<html>  
  
<head>   
  
<title>重用aculo Effect脚本实例</title>  
  
<link rel="stylesheet" type="text/css" href="/styles/default.css" />  
  
<!--  
  <script src="/scripts/boot.js"></s cript>  
  <script>  
    $import("example.slidePanel");  
  </sc ript>  
   
-->  
<script src="/scripts/net/conio/prototype/v1_5/prototype.js">  
</script>  
<script src="/scripts/us/aculo/script/v1_7/effects.js">  
</script>  
<script src="/scripts/us/aculo/script/v1_7/builder.js">  
</script>  
<script src="/scripts/example/effect.js">  
</script>  
  
</head>  
  
<body>  
    
<div class="menu_header"  
        onclick
="slidePanel('menu_block1')">  
        面板 1  
    
</div>  
    
<div class="menu_block" id="menu_block1">  
      
<ul>  
        
<li>text1</li>  
        
<li>text2</li>  
        
<li>text3</li>  
      
</ul>  
    
</div>  
</body>  
</html>  

q个例子的html代码明显比上面的复杂了,一堆堆的script标签Q而且q是有序的;q出现在面上,重构h也极光烦?br>
可以看出QJSI的加入可以让cd更加易用Qhtml代码更ؓz,最l用户已l不必关心所用类库的依赖了?br>
JSI中每一个脚本有一个单独的执行上下文。各个脚本顶部变量你可以随便使用Q不必担心不同脚本中的命名冲H,不会污染全局变量I间Q这U方式可以用于解 x些类库间变量冲突的问题(如jQuery和Prototype?函数Q。我们甚臛_以做到同一个页面上间接加蝲同一U类库的两个不同版本Q不怺? 响?br>
使用JSI后,很多l节我们可以在包中封装掉Q不需要告诉类库用者太多。大大增加类库的易用性。同Ӟcd装的支持可以让我们在第三方库的基础上轻杄按自q喜好~写自己的类库,同时避免依赖扩散造成的复杂度增加?br>
使用JSIntegration唯一多出的负担就是编写包定义文gQ不q想惌U定义文件可是一x逸的Q以后就不需要每ơ导入脚本的时候都心翼的判 断那个脚本先导入那个后导入,有那些间接用到的类库需要导入,{等Q,而且有了包结构后对于代码l织、重用,以及文档的编写阅读,都将非常有利?img src ="http://m.tkk7.com/jindw/aggbug/126038.html" width = "1" height = "1" />

]]>[导入]脚本安需导入的三U模式的Ҏhttp://m.tkk7.com/jindw/archive/2007/06/25/126020.html金大?/dc:creator>金大?/author>Mon, 25 Jun 2007 01:24:00 GMThttp://m.tkk7.com/jindw/archive/2007/06/25/126020.htmlhttp://m.tkk7.com/jindw/comments/126020.htmlhttp://m.tkk7.com/jindw/archive/2007/06/25/126020.html#Feedback0http://m.tkk7.com/jindw/comments/commentRss/126020.htmlhttp://m.tkk7.com/jindw/services/trackbacks/126020.html何谓安需装蝲Q?/strong>

脚本E序一般都是下载后执行 Q当脚本库非常庞大时Q一ơ性下载v来非常费Ӟ传统的解x式是Q按功能模块把脚本写在不同的文g中,面上手动加入script标签装蝲指定内容Q但 是这有一些缺点,cd的用者需要知道没个脚本之间的关系Q顺序要求等{,而不可能要求每个cd使用者都对其非常熟悉Q出错的可能性很大。于是很多框架开 始支持导入指令,想用什么一个导入函数就完了Q不必一堆堆的script文gQ不用小心翼的x着他们的依赖关pR?/font>

安需装蝲可分如下三种模式Q?/strong>

  • x同步按需装蝲Q?/strong>dQ?/strong>JSI、JSVM、dojoQ?/strong>?/strong>
    最单的按需装蝲实现Q通过XMLHttpRequest同步装蝲脚本文g实现。问题是Q浏览器使用q种方式同步获取资源时将D览器阻塞:停止响应用户事g、停止页面重L作。所以,虽然~程最为简单,但是用户体验最差?
  • 异步?/strong>装蝲Q?/strong>无阻塞,JSI2.0+Q?br> 异步导入Q不必多做解释,用户体验好,但是因ؓ其异步特征,处理h比较ȝ?/font>
  • 延迟同步按需装蝲Q?/strong>无阻塞,JSI2.0+Q?/strong>?/strong>
    JSI通过动态预装蝲功能实现的一U同步获取资源的ҎQ虽然也是同步,但没有阻塞,可以时兼顾易用性和用户体验的机x按。缺Ҏ
    有一定gq,当前脚本标签中不可用?

使用ҎQJSICZQ?/strong>

以一个代码语法着色程序ؓ例:
cd位置Qexample/codedecorator/code.js
面位置Qexample/xxx.html
  • x同步按需装蝲
    $import("example.codedecorator.Code");

    var code1 = new Code();
    code1.id 
    = "libCode";
    code1.decorate(); 

  • 异步?/strong>装蝲
    $import("example.codedecorator.Code",function(Code){
     
    var code1 = new Code();
     code1.id 
    = "libCode";
     code1.decorate();
    }) 

  • 延迟同步按需装蝲Q?/strong>无阻塞,JSI2.0+Q?/strong>?/strong>
    <script>"../scripts/boot.js"></script>
    <script>
    $import(
    "example.codedecorator.Code",true);
    </script>

    <script>
    var code1 = new Code();
    code1.id 
    = "libCode";
    code1.decorate();
    </script>

CZ说明Q?/font>

在线试

http://jsintegration.sourceforge.net/example/code.html

http://www.xidea.org/project/jsi/example/code.html

参考:

JSI 导入函数Q?function $import(path, callbackOrLazyLoad, target )



]]>
[导入]再谈一下DOMContentLoad事ghttp://m.tkk7.com/jindw/archive/2007/06/25/126018.html金大?/dc:creator>金大?/author>Mon, 25 Jun 2007 01:13:00 GMThttp://m.tkk7.com/jindw/archive/2007/06/25/126018.htmlhttp://m.tkk7.com/jindw/comments/126018.htmlhttp://m.tkk7.com/jindw/archive/2007/06/25/126018.html#Feedback0http://m.tkk7.com/jindw/comments/commentRss/126018.htmlhttp://m.tkk7.com/jindw/services/trackbacks/126018.htmlq个问题是个老问题了?
所以,标题加上一个再字?/p>

我主要说一下模拟这个事件时候容易出现的问题?/p>

对于FFQOpera9Q原生DOMContentLoad支持Q就不说了,最头疼的是IE?
我最初考虑q个问题的时候,惛_的是document的readyState属性?
L一下Dojo的源码,发现它也是基于这个属性去做的Q那Ӟ我基本就认准了这个方法?
于是再后来JSI1和JSI2早期的预览版本中Q都是基于这个属性做的,后来Q有个朋友向我反应,说JSI的装饰引擎在IE上启动比FF慢很多,我当时就猜测Q是否是q个DOMContentLoad的问题?/p>

l过试Q发玎ͼ实QreadyState必须{待囄装蝲完成之后才能|ؓcomplete?
于是到网上搜索一下其他办法,最l?Dean Edwards的blog上描q的一个基于script defer属性的解决办法胜出Qhttp://dean.edwards.name/weblog/category/dom/onload/
不过Q用document.write打印一D脚本,我真的不喜欢Q(

在评论里面我们可以看C些其他的Q有?readyState == 'complete' ? readyState==‘interactive’q个状态可以准模拟DOMContentLoad。我开始简单测试一下,貌似可行Q但是后来发? readyState==‘interactive’可能受alert{函数媄响,是_一般情况下QreadyState== ‘interactive’Ӟdom是装载完了的Q但是,当你文档装蝲q程中,调用了alert函数Q那么,readyState提前置? ‘interactive’?/p>

MQ目前来_我知道的Q只有两个办法可以真正实现IE上模拟DOMContentLoad

    1.htc ondocumentreadyQ需要额外的HTC文gQ?
    2.script defer(必须使用document.write打印一D脚本标?jquery目前采用的方?

最常见的一个错误:
    document.readyState(Dojo目前Q?.4.1Q采用的方式)

再说一下JSI的DOMContentLoad实现的用接口?/p>

js.html.EventUtil.addDOMReadyListener(<Function>listener ,<boolean>runAnyCase )

W二个参数用于确保listener 在Q何时候都会被调用QFF DOMContentLoad事g如果在事件发生之后设|listener是无效的Q?



]]>
JSI2性能试报告http://m.tkk7.com/jindw/archive/2007/06/22/125843.html金大?/dc:creator>金大?/author>Fri, 22 Jun 2007 07:01:00 GMThttp://m.tkk7.com/jindw/archive/2007/06/22/125843.htmlhttp://m.tkk7.com/jindw/comments/125843.htmlhttp://m.tkk7.com/jindw/archive/2007/06/22/125843.html#Feedback0http://m.tkk7.com/jindw/comments/commentRss/125843.htmlhttp://m.tkk7.com/jindw/services/trackbacks/125843.html装蝲效率试
试面见:test/load-eff-test.html

Z试l果更显客观Q我选择了第三方cd的装载测试:
'com.yahoo.yui.*',
'net.conio.prototype.*',
'net.fckeditor.*',
'org.jquery.*',
'us.aculo.script.*'
?2个脚本文Ӟ对于JSI来说q有诺干包定义文Ӟ?/p>

FF2:  
标记导入旉Q原始方式):
469,469,1047,484,484,437,469,484  
同步导入旉:
469,453,484,437,469,453  
延迟导入旉:
921,765,891,906,953,906,922  
异步导入旉:
859,1093,1141,1031,1641,1125,1078,1093,1157,1141  
  
IE7:  
标记导入旉:
343,297,297,344,328,328  
同步导入旉:
281,250,235,235,234,234,250,265  
延迟导入旉:
922,422,406,391,391,391,407,391  
异步导入旉:
625,672,672,703,703,672,703,704,688  



q行旉试
试脚本理后对新能的媄?影响因素有:全局变量和局部变量的查找旉差异Qeval的脚本和script标记直接插入的脚本的可能差异。(q? 个测试不h普遍性,q里我主要是试了一下浏览器对局部变量的讉K速度【JSI里面讉K变量都是装蝲单元内的局部变量】,所以故意测试了大量局部变量访 问的操作Q?
试面见:test/runtime-eff-test.html

FF2Q?nbsp; 
jsiTime:        
845,    927,    598,    687,    764,  
scriptTime:     
1432,   950,    1305,   1278,   1219,  
evalTime:       
1644,   1373,   1322,   1186,   1360,  
execTime:       
0  
dscriptTime:    
1432,   950,    1305,   1278,   1219,     
  
IE7:  
jsiTime:    
295,    205,    157,    315,    156,    142,    375,    328,    172,    172,      
scriptTime: 
172,    172,    189,    140,    251,    187,    217,    203,    172,    234,      
evalTime:   
236,    249,    139,    172,    281,    171,    172,    108,    436,    359,      
execTime:   
219,    234,    314,    157,    220,    266,    204,    234,    187,    95,   
dscriptTime:    
187,    265,    294,    326,    187,    328,     141,   221,    127,    249,       



上面的基数太,随机误差太大Q调整原始数据从新测试一遍jsiTime和scriptTime

jsiTime:    576,    658,    688,    703,    611,    608,          
scriptTime: 
706,    608,    562,    547,    655,    657,    


ȝQ?/strong>
JSI的装载性能表现不错Q完全不必计较?
托管代码的运行性能也没有太大区别,不过Q因为。JSI托管脚本使用的变量基本都是装载单元内的局部变量(本地声明变量Q或者外部依赖的引用或值拷贝)Q所以,对于FFq类局部变量比全局变量讉K速度快不的解释引擎QJSI托管脚本可以辑ֈ更好的运行效率?/p>

有个奇怪的问题QJSI在装载类库时Q与传统模式相比Q肯定增加了些额外的q算Q但是,貌似JSI的同步装载模式下Q装载脚本的耗时比传l模式还(IE 表现明显Q?ZQ?/span>
Ƣ迎大家对这奇怪的现象提出自己的猜惻I我稍后脓出我Ҏ问题的看法^_^



]]>
JSI2Alpha及JSA1beta 发布Q?/title><link>http://m.tkk7.com/jindw/archive/2007/06/22/125829.html</link><dc:creator>金大?/dc:creator><author>金大?/author><pubDate>Fri, 22 Jun 2007 06:36:00 GMT</pubDate><guid>http://m.tkk7.com/jindw/archive/2007/06/22/125829.html</guid><wfw:comment>http://m.tkk7.com/jindw/comments/125829.html</wfw:comment><comments>http://m.tkk7.com/jindw/archive/2007/06/22/125829.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/jindw/comments/commentRss/125829.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jindw/services/trackbacks/125829.html</trackback:ping><description><![CDATA[<p> </p> <div class="w24iuuu" id="" style="border: 1px dotted #0010ff; color: #454548;"><span style="font-weight: bold;">JSI介:</span><br> <p>JSI 是一?开攄?strong>无R?/strong>?脚本库管理框Ӟ内核不提供Q何具体功能,有一些功能子目Q如|页装饰引擎?/p> <p>更多信息h看:<a >http://www.xidea.org/project/jsi/</a></p> <br><span style="font-weight: bold;">JSA介:</span><br>JSA最初是做JSI~译处理的一个小工具Q现在也可以用来h、压~脚本。支持swing和ant task两种工作方式?br>可以通过webstart启动Q?a >启动JSAQ允许访问文件系l)</a>Q?span style="text-decoration: underline;"></span><a >沙箱内运行(功能受限Q?/a><br> <br></div> <br> <p><br></p> <p><br></p> <p>q次发布的JSI2Alpha相对于以前的预览版本Q做了一ơ全面的重构Q同时对API做了些简化?/p> <p><a >目前JSI2的公开API有:</a></p> <br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">/*</span><span style="color: #008000;"> 导入函数 </span><span style="color: #008000;">*/</span><span style="color: #000000;">  <br>$import(</span><span style="color: #000000;"><</span><span style="color: #000000;">string</span><span style="color: #000000;">></span><span style="color: #000000;">path,</span><span style="color: #000000;"><</span><span style="color: #0000ff;">boolean</span><span style="color: #000000;">|</span><span style="color: #000000;">Function</span><span style="color: #000000;">></span><span style="color: #000000;">callbackOrLazyLoad[可选参数],</span><span style="color: #000000;"><</span><span style="color: #000000;">Object</span><span style="color: #000000;">></span><span style="color: #000000;">target[可选参数])  <br>  <br></span><span style="color: #008000;">/*</span><span style="color: #008000;"> 日志讄相关 </span><span style="color: #008000;">*/</span><span style="color: #000000;">  <br>$JSI.setDefaultLogLevel(level)  <br>$JSI.setLogLevel(pathPattern,level)  <br>  <br></span><span style="color: #008000;">/*</span><span style="color: #008000;"> 装饰引擎相关函数 </span><span style="color: #008000;">*/</span><span style="color: #000000;">  <br>$JSI.addDecoratorProvider(pkg,alias…) </span><span style="color: #008000;">//</span><span style="color: #008000;">d装饰?  </span><span style="color: #008000;"><br></span><span style="color: #000000;">$JSI.decorate ( ) </span><span style="color: #008000;">//</span><span style="color: #008000;">准备执行装饰器Q?一般在配置文gQconfig.jsQ中调用.   </span><span style="color: #008000;"><br></span><span style="color: #000000;">  <br></span><span style="color: #008000;">/*</span><span style="color: #008000;"> 用于包定义的Package成员函数Q在__package__.js中调用(this指向当前package对象Q?nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;">  <br></span><span style="color: #0000ff;">this</span><span style="color: #000000;">.addScript(scriptPath,objectNames)</span><span style="color: #008000;">//</span><span style="color: #008000;">d脚本及其声明的对象(函数、方法名Q?   </span><span style="color: #008000;"><br></span><span style="color: #0000ff;">this</span><span style="color: #000000;">.add</span><span style="color: #000000;">*</span><span style="color: #000000;">Dependence(thisPath,targetPath,beforeLoad)</span><span style="color: #008000;">//</span><span style="color: #008000;">d脚本依赖.  </span><span style="color: #008000;"><br></span><span style="color: #0000ff;">this</span><span style="color: #000000;">.setImplementation(realPackage)</span><span style="color: #008000;">//</span><span style="color: #008000;">讄具体实现?当前包只是其别名Qƈ无Q何内??nbsp;</span></div> <br> <p> </p> <br> <p><strong>我们会尽量将JSI做成与具体功能无养I专著于脚本管理)?/strong></p> <p>对于js.*.*q个cdQ做了些_? <br>只保留下列元?/p> <p> </p> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">#js.html </span><span style="color: #008000;">//</span><span style="color: #008000;">保留q个包,因ؓq些实在太常用了?nbsp; </span><span style="color: #008000;"><br></span><span style="color: #000000;">   </span><span style="color: #000000;">*</span><span style="color: #000000;"> BrowserInfo  <br>   </span><span style="color: #000000;">*</span><span style="color: #000000;"> EventUtil  <br>   </span><span style="color: #000000;">*</span><span style="color: #000000;"> StyleUtil  <br>  <br>#js.util</span><span style="color: #008000;">//</span><span style="color: #008000;">保留q个包主要因为异步装载用到这些类?nbsp; </span><span style="color: #008000;"><br></span><span style="color: #000000;">   </span><span style="color: #000000;">*</span><span style="color: #000000;"> LoadTask  <br>   </span><span style="color: #000000;">*</span><span style="color: #000000;"> Request  <br>   </span><span style="color: #000000;">*</span><span style="color: #000000;"> ScriptLoadTask  <br>   </span><span style="color: #000000;">*</span><span style="color: #000000;"> TaskQueue  </span></div> <br> <p> </p> <script>render_code();</script> <p>发布文g说明Q? <br>自该版本启,source目录不再打包? <br>但是在scripts目录下新增boot-with-source.js文gQ该文g中包含全部源代码的数据? <br>里面~码的源代码可以通过我们?a target="blank">文档工具</a>查看。让大家习惯一下这个工L使用Q)</p> <p>JSA1betaQ增加了对JSI2的编译支持,同时对于普通脚本的压羃Q也增加了一些功能: <br> 1. ant task 增加多文件分l合q? <br> 2. swing ui 修正文g~码的bug?/p> <p>下蝲Q? <br>javaeye group: <a target="blank">http://jsi.group.javaeye.com/shares</a> <br>sourceforge: <pȝ最q好像有问题Q我的文件一直没能上传成?要过一D|间再?gt; 。。。。? </p><img src ="http://m.tkk7.com/jindw/aggbug/125829.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jindw/" target="_blank">金大?/a> 2007-06-22 14:36 <a href="http://m.tkk7.com/jindw/archive/2007/06/22/125829.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>貌似Opera的一个bughttp://m.tkk7.com/jindw/archive/2007/06/20/125422.html金大?/dc:creator>金大?/author>Wed, 20 Jun 2007 13:42:00 GMThttp://m.tkk7.com/jindw/archive/2007/06/20/125422.htmlhttp://m.tkk7.com/jindw/comments/125422.htmlhttp://m.tkk7.com/jindw/archive/2007/06/20/125422.html#Feedback0http://m.tkk7.com/jindw/comments/commentRss/125422.htmlhttp://m.tkk7.com/jindw/services/trackbacks/125422.html扑և问题Q怀疑是一个opera的bug?br>
function test(x){
  
try{
    
if(x){
      
return 1;
    }
else{
      
return 2;
    }
  }
catch(e){
    x
=1;
  }
finally{
    x
=2;
  }
}

语法查就通不q,报告错误Q?br>le://localhost/D:/eclipse/workspace/JSI/web/scripts/core.js
Event thread: BeforeExternalScript

opera8报错Qopera9好像没有这个问题?br>贴出来,让有cM问题的h省点心?br>

]]>
JavaScript模板引擎试Q让我空Ƣ喜一场:Q?/title><link>http://m.tkk7.com/jindw/archive/2007/06/08/122871.html</link><dc:creator>金大?/dc:creator><author>金大?/author><pubDate>Fri, 08 Jun 2007 08:15:00 GMT</pubDate><guid>http://m.tkk7.com/jindw/archive/2007/06/08/122871.html</guid><wfw:comment>http://m.tkk7.com/jindw/comments/122871.html</wfw:comment><comments>http://m.tkk7.com/jindw/archive/2007/06/08/122871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/jindw/comments/commentRss/122871.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jindw/services/trackbacks/122871.html</trackback:ping><description><![CDATA[试了一下trimpath模板引擎和一个我以前~写xml模板引擎Q显C测试结果,828/16?br><br>太让我振奋了。原惻I如果效率太低我就攑ּq个目Q貌似结果:q个行的js模板引擎Q和我没做优化的xml模板引擎q有q么大的差距Q?Q?br><br>仔细查一下,晕倒,试模板数据搞错了:Q?br><br>U正q来Q测试数据显C,trimpath比xml模板引擎要快好几倍:Q?br><br>而且Q如果模板内使用的@环次数越多,差距大Q(<br><br>比较扫兴的结果?br>军_吧这个东西从jsipȝapi中删除?br><br>不过Q感觉,虽然有这点差距,xml模板引擎q是可以作ؓ一个备用选择?br>Zjs标记库,cel表达式,对于熟悉jsp2.0Qjstl的程序员来说Q还是比较易懂,扩展也相对简单(trimpath没怎么研究Q或许是错的Q?br><br><a href="http://m.tkk7.com/Files/jindw/template-test.rar">下蝲试Q?/a><br>QXML Template是从jsi中拉出来的,部分试中没有用到的依赖没有包括q去Q?br><br> <img src ="http://m.tkk7.com/jindw/aggbug/122871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jindw/" target="_blank">金大?/a> 2007-06-08 16:15 <a href="http://m.tkk7.com/jindw/archive/2007/06/08/122871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用正则在Eclipse上对javascript扚w~进?/title><link>http://m.tkk7.com/jindw/archive/2007/06/08/122803.html</link><dc:creator>金大?/dc:creator><author>金大?/author><pubDate>Fri, 08 Jun 2007 03:33:00 GMT</pubDate><guid>http://m.tkk7.com/jindw/archive/2007/06/08/122803.html</guid><wfw:comment>http://m.tkk7.com/jindw/comments/122803.html</wfw:comment><comments>http://m.tkk7.com/jindw/archive/2007/06/08/122803.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/jindw/comments/commentRss/122803.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jindw/services/trackbacks/122803.html</trackback:ping><description><![CDATA[  一直没有找到好用的 javascript格式化工P不过UE有个非常漂亮的功能,多行~辑Q可以轻杄扚w~进?br>  但是eclipse呢?很遗憾,没有Q不q用正则表达式可以轻村֮成这个功能,匚w整行Q替换时在行前加上羃q空根{?br><br>findQ^.*<br>replace WithQ?nbsp; $0<br><br>说到q个正则Q鄙视一下js的正则语法,居然匚wl是 $1 $2 $3 ....索引?开始,但是匚w全部Z么要来个$&?  多么难记Q?q是eclipse?0方便<br>而且js的match函数q回的数l还?[全匹?l?Q组2....]Q全匚w索引是0嘛! 居然要来?&??<br>扼杀我们的联惛_性?br><br><img src ="http://m.tkk7.com/jindw/aggbug/122803.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jindw/" target="_blank">金大?/a> 2007-06-08 11:33 <a href="http://m.tkk7.com/jindw/archive/2007/06/08/122803.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正则表达式实现JavaScript日期格式化的x?/title><link>http://m.tkk7.com/jindw/archive/2007/06/07/122635.html</link><dc:creator>金大?/dc:creator><author>金大?/author><pubDate>Thu, 07 Jun 2007 08:27:00 GMT</pubDate><guid>http://m.tkk7.com/jindw/archive/2007/06/07/122635.html</guid><wfw:comment>http://m.tkk7.com/jindw/comments/122635.html</wfw:comment><comments>http://m.tkk7.com/jindw/archive/2007/06/07/122635.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://m.tkk7.com/jindw/comments/commentRss/122635.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jindw/services/trackbacks/122635.html</trackback:ping><description><![CDATA[今天和网友聊起在javascript里面实现DateFormat 的话题?br><br>把想法发布一下,当是W记?br><br>格式化:<br>  1、先用正则把日期表达式分D:<br>    var tokens = "yyyy-MM-dd(没有旉)".match(/y+|M+|d+|m+|[^yMdm]+/g)<br>    //l果数组为:yyyy,-,MM,-,dd,(没有旉)<br>  2、将其中的yyyy MM dd 替换成相映的处理对象<br>  <br>  3、格式化Ӟ先复制数l,依次遍历Q如果元素是处理对象Q那么元素值替换成处理l果?br><br>  4、将新数ljoin。即为需要结果?br><br>  5、parse时。先复制数组Q若元素为字W串Q精匹配。若未处理对象,d需要的|匚wp|Q则l止操作Q返回结果?br><br><br><br><br>x而已Q实际实现时可能q有很多现在无法意料的事情:Q?br><br> <img src ="http://m.tkk7.com/jindw/aggbug/122635.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jindw/" target="_blank">金大?/a> 2007-06-07 16:27 <a href="http://m.tkk7.com/jindw/archive/2007/06/07/122635.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSI API之BrowserInfo、EventUtil讨论http://m.tkk7.com/jindw/archive/2007/06/06/122330.html金大?/dc:creator>金大?/author>Wed, 06 Jun 2007 04:17:00 GMThttp://m.tkk7.com/jindw/archive/2007/06/06/122330.htmlhttp://m.tkk7.com/jindw/comments/122330.htmlhttp://m.tkk7.com/jindw/archive/2007/06/06/122330.html#Feedback0http://m.tkk7.com/jindw/comments/commentRss/122330.htmlhttp://m.tkk7.com/jindw/services/trackbacks/122330.htmlJSI 自n提供一些常用APIQ数量极,量以一U正式的风格提供Q尽量回避争议?br>有些是启动文件用到的Q如d队列支持Q还有如装饰引擎直接用到的,如BrowserInfo、EventUtil、StyleUtil{?br>对于启动文g中未直接用到的,如果风格的争议太大,都将剔除出去?/div>

BrowserInfo对象Q?/h2>
/**
 * BrowserInfo 对象Q用于判断浏览器的相关信息,如浏览器cd、quirks模式、客L语言Q简体中文?p..未实玎ͼ、操作系l(未实玎ͼ{等?br> * @public
 
*/
var BrowserInfo = {
  isIE : falseChecker,
  isOpera : falseChecker,
  isGecko : falseChecker,
  isNetscape : falseChecker,
  isMozilla : falseChecker,
  isFirefox : falseChecker,
  isKhtml : falseChecker,
  isSafari : falseChecker,
  isKonqueror : falseChecker,
  isQuirks : 
function(){…}
};

其中最常用的要?is<览器类?gt;Q最版本号?最大版本号Q?br>此外Q我q将BrowserInfo的函数拷贝到navigator对象上,q个有无必要呢?
//@Deprecated ???
for(var n in BrowserInfo){
  window.navigator[n] 
= BrowserInfo[n];
}

不同之处Q?/h4> 现在在浏览器判断上面Q一般是用常量表C,比如isIE之类的,JSI的BrowserInfo使用函数Q以便提供更强大更灵zȝ功能?br>
EventUtil
EventType 对象的成员函数有Q?br>

addListener(el, type, fn, cap)
removeListener(el, type, fn, cap)

add
<Eventtype>Listener(element, listener, captrue)
如addLoadListenerQaddMousedownListenerQaddMouseoutListener    
remove
<Eventtype>Listener(element, listener, captrue)
createEvent(type, canBubble, cancelable)
dispatchEvent(el, even)

其中: <Eventtype>代表一U事件类型?br>W3C事gcd有:
var events = ['click','mousedown','mouseup','mouseover','mousemove','mouseout','load','unload','abort','error','select','change','submit','reset','focus','blur','resize','scroll'].
             concat(['DOMFocusIn','DOMFocusOut','DOMActivate']);


此外Q还d了一U事件类型:DOMLoad。就是mozilla的DOMContentLoaded事gQ在Dom树构造完成但囄资源{可能未完成时触发?br>对于q种事gcdQ?element,  captrue参数都将忽略。暂时只有添加函敎ͼ没有删除函数Q有删除的必要吗Q)?br>

不同之处Q?/h3> q个事g处理函数集与其他常见方式的却别有Q?br>
  1. this支持。IE的attachҎd的函敎ͼq行时this指向window对象QJSI吧这点给U正q来Q与w3c的addEventListener行ؓ一致?/li>
  2. 事gcd直接体现在函数名中,q样有利于书写上的错误及早发现?/li>
  3. 事g格式化,事件的讉K方式格式化ؓW3C的方式?/li>
  4. 自动清理Q这也不不同吧Q现在大多数JS库都提供q个功能Q就是在d面时清理全部注册事件。但是这对一些单늨序是无效的(OPOAQ本Z比较讨厌q种模式Q呵呵)Q以后是否可以提供一个purgeElement函数Q用于清理指定元素及其子元素的事件呢Q?/li>
非常希望大家U极发表自己的看法,该修改就修改Q如果争议太大,那么我将吧这些从pȝAPI中移除?br>
E序下蝲

q个API也可以脱JSI使用Q只是,在编写的时候,因ؓ有了JSI的保护,我用了不少内部变量Qؓ避免可能的冲H,做了如下处理?


var BrowserInfo = function(){
  
//#include(browser-info.js).
  return BrowserInfo;
}

var EventUtil = function(){
  
//#include(event-util.js).
  return EventUtil;
}

下蝲地址




]]>javascript 性能试pdQ@环反转的效果http://m.tkk7.com/jindw/archive/2007/05/31/121121.html金大?/dc:creator>金大?/author>Thu, 31 May 2007 04:30:00 GMThttp://m.tkk7.com/jindw/archive/2007/05/31/121121.htmlhttp://m.tkk7.com/jindw/comments/121121.htmlhttp://m.tkk7.com/jindw/archive/2007/05/31/121121.html#Feedback5http://m.tkk7.com/jindw/comments/commentRss/121121.htmlhttp://m.tkk7.com/jindw/services/trackbacks/121121.html
  for(var i = 0;i<data.length;i++){
    
//.
  }
  
//反{后代?/span>
  for(var i = data.length-1;i>=0;i--){
    
//.
  }

q类优化的作用是明显?但是具体有多大作用呢?

用一个长度ؓ100 000 的数l测试一?
515/313
500/313
516/312
516/328
516/328

可见,循环反{?只需要原?/5的时?
但是,q种东西到底有多大h?FF?00ơ@环仅需?毫秒的时?所?个h认ؓ,只要循环的内容不是太?使用不算非常频繁,那么没有太大必要.
加入循环的长度需要通过函数取得,且不?那么,反{的效率还是可观的,在IE?函数调用消耗是普通操作的十多?

试代码:
var incTime = 0;
var decTime = 0;
var inc = 0;
var data = new Array(10*10000);
//while(inc++<50)
{
  
var t1 = new Date();
  
for(var i = 0;i<data.length;i++){
  }
  
var t2 = new Date();
  
for(var i = data.length-1;i>=0;i--){
  }
  
var t3 = new Date();
  incTime
+=(t2-t1);
  decTime
+=(t3-t2);
}

prompt(
"incTime/decTime",incTime +'/'+decTime)




]]>
javascript 性能试pdQ正则表辑ּ http://m.tkk7.com/jindw/archive/2007/05/30/120889.html金大?/dc:creator>金大?/author>Wed, 30 May 2007 05:22:00 GMThttp://m.tkk7.com/jindw/archive/2007/05/30/120889.htmlhttp://m.tkk7.com/jindw/comments/120889.htmlhttp://m.tkk7.com/jindw/archive/2007/05/30/120889.html#Feedback0http://m.tkk7.com/jindw/comments/commentRss/120889.htmlhttp://m.tkk7.com/jindw/services/trackbacks/120889.htmlJSI的实C,有这样一U需?有自带命名I间的脚本元素名数组转换成没有命名空间的变量名数l?
比如 :
['YAHOO.util.XXXX,YAHOO.util.YYYY,YAHOO.event.XX'] ->['YAHOO']

以前一直是较长的一D处理代?今天H发奇想,q个用正则表辑ּ处理效果如何?

于是,pU处?分别试了正则表辑ּ和javascript代码的效?

试数据如下(regTime /codeTime):
620/4536
729/4068
719/4250
645/4152
655/4642

FF和IEl果差不?上面是FF2的数?br>
ȝ:
l常看见很多地方Ҏ则表辑ּ的效率的怀?但是q个问题攑֜javascript里面,好像情况又不同了. 适当使用正则?反而可以大大提高效?
在javascriptq类\较慢的解释型语言里面,即?能用原生代码׃要自己写.

试代码:
var data = [];
for(var i = 0;i<20;i++){
  data[i] 
= "NS"+i/10+'.'+i
}
document.write(
  
//(data == data.sort()) +"/"+
  data +"<hr>")
var i = 0;
var regTime = 0;
var codeTime = 0;
var inc = 0;
var reg = /(\b[\$\w]+)[\$\w\.]*(,\1\b[\$\w\.]*)*/g;

var regResult,codeResult;
while(inc++<100){
  
var i=0;
  
var t1 = new Date();
  
while(i++<100){
    regResult 
= data.join(',').replace(reg,'$1').split(',');
  }

  
var t2 = new Date();
  
while(i++<200){
    codeResult 
= [];
    
var flagMap = {};
    
for(var j=data.length-1;j>=0;j--){
      key 
= data[j];
      key 
= key.substr(0,key.indexOf('.'));
      
if(!flagMap[key]){
        codeResult[codeResult.length] 
= (key);
        
//codeResult.push(key);
        flagMap[key] = true;
      }
    }
  }
  
var t3 = new Date();
  regTime 
+=(t2-t1);
  codeTime
+=(t3-t2);
}
document.write(
  
"regResult:"+
  regResult)
document.write(
  
"<hr>codeResult:"+
  codeResult)
prompt(
"regTime /codeTime",regTime  +'/'+codeTime)



]]>
javascript 性能试pdQ-函数调用http://m.tkk7.com/jindw/archive/2007/05/29/120742.html金大?/dc:creator>金大?/author>Tue, 29 May 2007 10:00:00 GMThttp://m.tkk7.com/jindw/archive/2007/05/29/120742.htmlhttp://m.tkk7.com/jindw/comments/120742.htmlhttp://m.tkk7.com/jindw/archive/2007/05/29/120742.html#Feedback0http://m.tkk7.com/jindw/comments/commentRss/120742.htmlhttp://m.tkk7.com/jindw/services/trackbacks/120742.html开?a >JSI的优化,q些问题现在必须认真考虑了,试一把:

一个简单的Q+操作Q直接操作和函数内操作(注,函数参数对原始类型是g递,所以这不会影响被传入的变量Q这里测试里面,两类操作的行为是不一LQ?br>
FF2试l果QcallTime/opTimeQ:
2871/2582
2919/2675
2734/2704
2953/2516
3732/3346

IE7试l果Q?br>3140/376
3173/327
3238/247
3265/235
3217/299

通过试可见Q函数调用的消耗基本可以忽略。每ơ调用时间仅为:
3000/(200*1000*5) ==0.3毫秒 Q这个时间还包含函数内部的+Q操?br>
从示例可见,FF的函数调用消耗基本可以府略,IE虽然相当于十倍+Q类单操作,但依然不以重视?br>

奇怪的是,W一ơ碰见ie的运行效率高于ff的情c?br>
试代码
var i = 0;
var callTime = 0;
var opTime = 0;
var inc = 0;
function plus(z){z++};
while(inc++<200){
  
var i=0;
  
var x = 1;
  
var t1 = new Date();
  
while(i++<1000){
    plus(x);
    plus(x);
    plus(x);
    plus(x);
    plus(x);
  }

  
var t2 = new Date();
  
while(i++<2000){
    x
++;
    x
++;
    x
++;
    x
++;
    x
++;
  }
  
var t3 = new Date();
  callTime
+=(t2-t1);
  opTime
+=(t3-t2);
}

prompt(
"callTime/opTime",callTime +'/'+opTime)







]]>
关于javascript for in 循环效率的疑?/title><link>http://m.tkk7.com/jindw/archive/2007/05/27/120312.html</link><dc:creator>金大?/dc:creator><author>金大?/author><pubDate>Sun, 27 May 2007 09:18:00 GMT</pubDate><guid>http://m.tkk7.com/jindw/archive/2007/05/27/120312.html</guid><wfw:comment>http://m.tkk7.com/jindw/comments/120312.html</wfw:comment><comments>http://m.tkk7.com/jindw/archive/2007/05/27/120312.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://m.tkk7.com/jindw/comments/commentRss/120312.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jindw/services/trackbacks/120312.html</trackback:ping><description><![CDATA[前几天无意中看到一个网友blog上关于这个@环效率的问题Q说要尽量避免用?br>有点x,我在<a >JSI</a>中可是用了不,呵呵?br>试一下,负担l于可以放下来了Q?br><br>试对象Q?br>一个对象模拟mapQ测试for in 循环<br>两个数组Q测试for(;;)循环<br><br>q箋4ơ运行时间比?br>957/1278Q?55/1357Q?014/1282Q?68/1392<br><br><br><span style="font-weight: bold;">明显Q要实现cMmap的功能,q是for in 快点?/span><br><br>上面的数据是ff2上的l果Qie7上也差不多,差距更小一炏V?br><br>试代码Q?br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">function</span><span style="color: #000000;"> C(i){<br>  </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> i</span><span style="color: #000000;"><</span><span style="color: #000000;">62</span><span style="color: #000000;">?</span><span style="color: #000000;"><br>    String.fromCharCode(i</span><span style="color: #000000;">+=</span><span style="color: #000000;"><br>      i</span><span style="color: #000000;"><</span><span style="color: #000000;">26</span><span style="color: #000000;">?</span><span style="color: #000000;">65</span><span style="color: #000000;"><br>        :i</span><span style="color: #000000;"><</span><span style="color: #000000;">52</span><span style="color: #000000;">?</span><span style="color: #000000;">71</span><span style="color: #008000;">//</span><span style="color: #008000;">97-26</span><span style="color: #008000;"><br></span><span style="color: #000000;">          :</span><span style="color: #000000;">-</span><span style="color: #000000;">4</span><span style="color: #008000;">//</span><span style="color: #008000;">48-26-26</span><span style="color: #008000;"><br></span><span style="color: #000000;">    )<br>      :i</span><span style="color: #000000;"><</span><span style="color: #000000;">63</span><span style="color: #000000;">?</span><span style="color: #000000;">'_'<br>        :i</span><span style="color: #000000;"><</span><span style="color: #000000;">64</span><span style="color: #000000;">?</span><span style="color: #000000;">'$'<br>          :C(i</span><span style="color: #000000;">>></span><span style="color: #000000;">6</span><span style="color: #000000;">)</span><span style="color: #000000;">+</span><span style="color: #000000;">C(i</span><span style="color: #000000;">&</span><span style="color: #000000;">63</span><span style="color: #000000;">)<br>}<br></span><span style="color: #0000ff;">var</span><span style="color: #000000;"> map </span><span style="color: #000000;">=</span><span style="color: #000000;"> {};<br></span><span style="color: #0000ff;">var</span><span style="color: #000000;"> arr1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> [];<br></span><span style="color: #0000ff;">var</span><span style="color: #000000;"> arr2 </span><span style="color: #000000;">=</span><span style="color: #000000;"> [];<br><br></span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;"><</span><span style="color: #000000;">1000</span><span style="color: #000000;">;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>  </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> c </span><span style="color: #000000;">=</span><span style="color: #000000;"> C(i);<br>  map[c] </span><span style="color: #000000;">=</span><span style="color: #000000;"> i;<br>  arr1.push(c);<br>  arr2.push(i);<br>}<br></span><span style="color: #0000ff;">var</span><span style="color: #000000;"> i </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">var</span><span style="color: #000000;"> mapTime </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">var</span><span style="color: #000000;"> arrTime </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">var</span><span style="color: #000000;"> inc </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">while</span><span style="color: #000000;">(inc</span><span style="color: #000000;">++<</span><span style="color: #000000;">500</span><span style="color: #000000;">){<br>  </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> t1 </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Date();<br>  </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> n </span><span style="color: #0000ff;">in</span><span style="color: #000000;"> map){<br>    n </span><span style="color: #000000;">=</span><span style="color: #000000;"> map[n];<br>  }<br>  </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> t2 </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Date();<br>  </span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">var</span><span style="color: #000000;"> j </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;">;j</span><span style="color: #000000;"><</span><span style="color: #000000;">1000</span><span style="color: #000000;">;j</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>    n </span><span style="color: #000000;">=</span><span style="color: #000000;">arr1[j];<br>    n </span><span style="color: #000000;">=</span><span style="color: #000000;">arr2[j];<br>  }<br>  </span><span style="color: #0000ff;">var</span><span style="color: #000000;"> t3 </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> Date();<br>  mapTime</span><span style="color: #000000;">+=</span><span style="color: #000000;">(t2</span><span style="color: #000000;">-</span><span style="color: #000000;">t1);<br>  arrTime</span><span style="color: #000000;">+=</span><span style="color: #000000;">(t3</span><span style="color: #000000;">-</span><span style="color: #000000;">t2);<br>}<br><br>prompt(</span><span style="color: #000000;">"</span><span style="color: #000000;">mapTime/arrTime</span><span style="color: #000000;">"</span><span style="color: #000000;">,mapTime </span><span style="color: #000000;">+</span><span style="color: #000000;">'</span><span style="color: #000000;">/</span><span style="color: #000000;">'</span><span style="color: #000000;">+</span><span style="color: #000000;">arrTime)</span></div> <br><br><img src ="http://m.tkk7.com/jindw/aggbug/120312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jindw/" target="_blank">金大?/a> 2007-05-27 17:18 <a href="http://m.tkk7.com/jindw/archive/2007/05/27/120312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>几种脚本文本压羃方式压羃比率和解压性能的比?/title><link>http://m.tkk7.com/jindw/archive/2007/05/24/119553.html</link><dc:creator>金大?/dc:creator><author>金大?/author><pubDate>Thu, 24 May 2007 01:28:00 GMT</pubDate><guid>http://m.tkk7.com/jindw/archive/2007/05/24/119553.html</guid><wfw:comment>http://m.tkk7.com/jindw/comments/119553.html</wfw:comment><comments>http://m.tkk7.com/jindw/archive/2007/05/24/119553.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/jindw/comments/commentRss/119553.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/jindw/services/trackbacks/119553.html</trackback:ping><description><![CDATA[刚刚修正了一个JSA的bug?br> <br> Z试了一下文本压~的性能Q和Upacker 压羃QShrinkSafeQpacker压羃?br> 压羃大小Q?br> jquery-jsa-s.jsQJSA的语法压~):29766 <hr> jquery.compressed.jsQShrinkSafe语法压羃Q?33992<br> <hr> jquery-jsa-st.jsQJSA的语法压~+文本压羃Q?19526 <hr> jquery-packer.jsQPacker文本压羃Q?20977<hr> jquery.compressed-packer.jsQShrinkSafe语法压羃QPacker文本压羃Q?21839<br> <br> 有点奇怪的是,文本压羃和语法压~是有一定互补性的Q但是ShrinkSafeQPacker比单U的Packer文本压羃效率q低Q?<br> 我想可能是ShrinkSafe做的一些语法补全(可省略的 {、}?、)QjQuery~码的风格导致?br> <br> <h2>Firefox试数据Q?0ơ压~时间的毫秒敎ͼq箋5回测试数据)</h2> jquery-jsa-st.js:784<br> jquery-packer.js:1265<br> jquery.compressed-packer.js:1529<br> <br> jquery-jsa-st.js:718<br> jquery-packer.js:922<br> jquery.compressed-packer.js:766<br> <br> jquery-jsa-st.js:753<br> jquery-packer.js:872<br> jquery.compressed-packer.js:828<br> <br> jquery-jsa-st.js:1438<br> jquery-packer.js:1484<br> jquery.compressed-packer.js:1735<br> <br> jquery-jsa-st.js:687<br> jquery-packer.js:1236<br> jquery.compressed-packer.js:1234<br> <br> <br> <h2>IE5 试数据Q连l三回测试数据)</h2> jquery-jsa-st.js:766<br> --------------------------------------------------------------------------------<br> jquery-packer.js:9765<br> --------------------------------------------------------------------------------<br> jquery.compressed-packer.js:10547<br> <br> <br> jquery-jsa-st.js:671<br> --------------------------------------------------------------------------------<br> jquery-packer.js:9002<br> --------------------------------------------------------------------------------<br> jquery.compressed-packer.js:10265<br> <br> <br> jquery-jsa-st.js:704<br> --------------------------------------------------------------------------------<br> jquery-packer.js:8232<br> --------------------------------------------------------------------------------<br> jquery.compressed-packer.js:10314<br> <br> <h2>ȝ</h2> 文本压羃是个比较耗时的操作,像JQueryq样大的cd普遍需要接q?00毫秒的解压时间?br> 如果需要兼容IE5q种老古董,那么最好不要用packer的文本压~,太耗时?br> JSA1 Ҏ本压~做了些改进Q表现还可以?br> <br> 如果要计较脚本文本压~后的解压开销Q徏议用JSA的语法压~,配合服务器端的gzip压羃?br> 不推荐dojo 的ShrinkSafeQ原因是它的几个安全问题?<img src ="http://m.tkk7.com/jindw/aggbug/119553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/jindw/" target="_blank">金大?/a> 2007-05-24 09:28 <a href="http://m.tkk7.com/jindw/archive/2007/05/24/119553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://m.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://www48646.com" target="_blank">þþž޾Ʒ</a>| <a href="http://hs969.com" target="_blank">APPѹۿƵ</a>| <a href="http://918989b.com" target="_blank">Ƶһ</a>| <a href="http://wwwyy763.com" target="_blank">2018</a>| <a href="http://mtripmall.com" target="_blank">޾Ʒɫ</a>| <a href="http://930mk.com" target="_blank">AVҹҹþ</a>| <a href="http://138site.com" target="_blank">AVۺɫһ</a>| <a href="http://eigakyuka.com" target="_blank">ɫۺav</a>| <a href="http://55xxb.com" target="_blank">gv޹gvո </a>| <a href="http://txtmp3.com" target="_blank">þþƷһ</a>| <a href="http://yangguang882.com" target="_blank">ŮڵƵվ</a>| <a href="http://bjlfggcm.com" target="_blank">ˬˬƬav </a>| <a href="http://dyk7.com" target="_blank">Ʒѹۿ</a>| <a href="http://www137av.com" target="_blank">޳߲</a>| <a href="http://352362.com" target="_blank">Ʒѹۿ</a>| <a href="http://www77753.com" target="_blank">뾫ƷA߹ۿ</a>| <a href="http://123470c.com" target="_blank">鶹ȫַ</a>| <a href="http://chinaedubrand.com" target="_blank">ҹƷþþþþapp</a>| <a href="http://770144.com" target="_blank">޸һ</a>| <a href="http://5656ys.com" target="_blank">޸avվ</a>| <a href="http://zzdyzj.com" target="_blank">ѹۿAVƬ </a>| <a href="http://shandonghj.com" target="_blank">ɫۺϾþþƷ޹</a>| <a href="http://sanyoumiaomu.com" target="_blank">˳AVվ</a>| <a href="http://69ct.com" target="_blank">ۺ</a>| <a href="http://tjbdyx.com" target="_blank">ɫֻڵ</a>| <a href="http://w6626.com" target="_blank">ƬվɫƬ</a>| <a href="http://jmzc888.com" target="_blank">߹ۿձaƵ</a>| <a href="http://wowo123.com" target="_blank">ۺƵ</a>| <a href="http://sewuji.com" target="_blank">ѾƷ͵Բ </a>| <a href="http://zdxxxx.com" target="_blank">ҹ߹ۿ</a>| <a href="http://wwwdd312.com" target="_blank">ۺɫ߲</a>| <a href="http://www9k832.com" target="_blank">պƷרվ </a>| <a href="http://chaoxung.com" target="_blank">þþƷ</a>| <a href="http://ymiwang.com" target="_blank">ŷպavҰ</a>| <a href="http://kfdingrui.com" target="_blank">޾Ʒ2345</a>| <a href="http://ccc998.com" target="_blank">߹ۿavÿո</a>| <a href="http://66h99.com" target="_blank">Ʒ_˳߸</a>| <a href="http://vastraje.com" target="_blank">AV鶹Խ</a>| <a href="http://cdlsy.com" target="_blank">պƵ</a>| <a href="http://ynkmht.com" target="_blank">ùƵ</a>| <a href="http://sd-ll.com" target="_blank">޹˾þۺ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>