2008-03-24 09:08:31
推荐TAG: Ajax  |   正则表达式  |   prototype  |   FSO  |   Drag  |   Menu  |   对象
重写了下对JavaScript语法解析的代码,现已能准确区分正则与除法,并对正则进行标亮。
目前已经实现对以下元素进行语法标亮:
>> 单行、多行字符串
>> 单行、多行注释
>> 正则表达式
>> JavaScript保留关键字(词库待补充完善)
>> JavaScript对象常用方法(词库待补充完善)

语法案例标亮测试:
http://www.cnlei.com/blog/article.asp?id=565
jQuery v1.3.1 标亮测试:
http://www.cnlei.com/blog/article.asp?id=567

压力测试结果:
-------------------
测试文件:ext-all-debug.js
文件大小:2.28 MB (2,397,109 字节)
-------------------
在各浏览器下压力测试结果:
IE 8  : 运行缓慢,提示是否停止执行
Firefox  : 用时4131毫秒
Chrome 4  : 用时1164毫秒
Opera 10  : 用时9359毫秒
Safari 4  : 用时1281毫秒
-------------------
测试机器配置:
ThinkPAD T400, Intel(R) Core(TM)2 Duo CPU P8400 @ 2.26GHz, 791MHz, 1.98GB内存

实现源码如下:
/*
lJSColoration.src.js:完整注释版(约10.8KB)
*/
if(typeof(window["lJSF"])=="undefined"){
window["lJSF"]={
  Version  :"2.5.2<std_lv_n_00>",
  Author  :"CN.LEI",
  EMail    :"scriptpower@qq.com",
  Website  :"http://www.cnlei.com"
};}
lJSF.obj={};
lJSF.obj.JSParser={};
/*
* lJSParser  : Little JavaScript Parser v2.0
****************************************************
* Author  : CN.LEI
...

阅读全文...
jQuery JavaScript Library v1.3.1
/*!
 * jQuery JavaScript Library v1.3.1
 * http://jquery.com/
 *
 * Copyright (c) 2009 John Resig
 * Dual licensed under the MIT and GPL licenses.
 * http://docs.jquery.com/License
 *
 * Date: 2009-01-21 20:42:16 -0500 (Wed, 21 Jan 2009)
 * Revision: 6158
 */
(function(){
var
  // Will speed up references to window, and allows munging its name.
  window = this,
  // Will speed up references to undefined, and allows munging its name.
  undefined,
  // Map over jQuery in case of overwrite
  _jQuery = window.jQuery,
  // Map over the $ in case of overwrite
  _$ = window.$,
  jQuery = window.jQuery = window.$ = function( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context );
  },
  // A simple way to check for HTML strings or ID strings
  // (both of which we optimize for)
  quickExpr = /^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,
  // Is it a simple selector
  isSimple = /^.[^:#\[\.,]*$/;
...

阅读全文...

[隐藏] [隐藏]

[ 2010-01-22 by ScriptPower ]
你没有阅读此日志的权限.
语法测试案例:
var num=a / /**除法中的释注1**//reg// /**除法中的释注2**/2;
var str='引号'//紧跟在引号后的注释
var str="引号"//紧跟在引号后的注释
/**释注**///紧跟在多行注释后的单行释注
var num=/reg//2/*注释夹杂在除法当中*//2/3/5/6/*注释夹杂在除法当中*//7/8/9;
var reg=/reg///我是紧跟在正则后的注释
var num=/**释注**//reg// /**除号的行注释**/2;
var num=/reg/ / /reg/;  //正则除以正则
/*******************************************/
var num=/reg//2/*注释夹杂在除法当中*//2/3/5/6/*注释夹杂在除法当中*//7/8/9;
var reg=/reg///我是紧跟在正则后的注释
var str="绰号"//紧跟在引号后的注释
/**释注**///释注
var xxx=/**释注**//reg// /**除号的行注释**/2;
var num=/reg/ / /reg/ / 2;
//单行注释
/* 多行注释 */
 var toString = Object.prototype.toString ;
 var valueOf = Object.prototype.valueOf ;
 var xxx=null;
var s="";
var reg=/\//g;
var reg=/\///2/*注释*//3/4/5;
/******************* 字符串 *******************/
var a='单引号';
var b='xxx\'xxx\'xxx"xxx"xxxx';
var d="双引号";
var c='+"+"+'+'+\'+\'+'+'+';
var sss="xxx\
  xxx\
  xxx\
  xxx";
var yyy=ss+'xxx\
  xxx\
  xxx\
  xxx';
/******************* 字符串 end *******************/
/******************* 正则 *******************/
...

阅读全文...
只有在以下几种情况下才有声音,其它情况下均无声
>> 设置的闹钟能正常提示, 有铃声
>> 拨打电话时,只有在免提状态下,扬声器有声音
>> 在"设置-> 声音->铃声"里切换不同铃声时,扬声器有声音
>> 耳机在完全插入状态下,耳机/扬声器都没有声音;
耳机在半插入状态下(即耳机插孔未完全插入最底层),扬声器有声音,耳机本身却没有声音 (并且要找准这个接触点比较麻烦,只有在打开ipod时,不断地调整耳机插入的接触位置,当发现直到 ipod音量提示条的状态变化了后,才会出现声音器有声音).

已经尝试过以下操作,但仍未解决声音问题
>> 左侧的静音键按钮没有显示红点(即非静音状态);
>> 重启iphone和"设置-通用-还原-还原所有设置" 都试了;
>> 按"http://www.weiphone.com/thread-80959-1-1.html" 这篇贴子所提示的方法操作了,还是无法解决.

其它说明:
>> iphone系统版本为: 1.1.2
>> 昨天穿衣裤时, iphone从裤兜里滑了出来掉在了地上,地面为地板瓷砖, 高度约为0.5米. (但愿不是因为从这半米左右的高度摔了一下而引起的;如果真是这样,那iphone的搞摔能力就太弱了-_-)
function f(x){
  alert(x);
 return arguments.callee;
}
f(0)(1)(2)(3)(4)(5)(6)(7)(8)(9);
function f(){
  var a=arguments,i,l=a.length;
  for(i=0; i<l;i++){
    alert(a[i]);
  }
 return arguments.callee;
}
f(0)(1,2)(3,4,5)(6,7,8,9);
和同事同学一起报了周末班学车,同学花了10块大洋买了张模拟题光盘,但一张光盘只能在两台电脑上注册安装.安装了后,才发现软件制作得非常烂,操作极不方便.
帮助文件中提示说,只能使用小键盘数字键来输入;而笔记本的数字开启后,它竟然不能识别.于是打开它的安装目录打到里面的数据库文件,把数据导出来,自己做了个iphone版的交规考试练习.


在线iphone版:
http://www.cnlei.com/c1/

如果你的iphone装了apache的话,可以下载下面的压缩包文件:
http://www.cnlei.com/c1/DriverTest.rar
解压后放到下面这个目录:
/var/root/sites/c1/ (注: c1 为自建子文件夹)
然后可使用Safari通过下述地址访问练习:
http://127.0.0.1/c1/
documentFragment 是一個無父對象的document對象.
他支持以下DOM2方法:
appendChild, cloneNode, hasAttributes, hasChildNodes, insertBefore, normalize, removeChild, replaceChild.
也支持以下DOM2屬性:
attributes, childNodes, firstChild, lastChild, localName, namespaceURI, nextSibling, nodeName, nodeType, nodeValue, ownerDocument, parentNode, prefix, previousSibling, textContent.
其他方法可以將documentFragment 作為一個參數,(比如Node的 appendChild和insertBefore 方法),這樣,fragment 就可以被追加到父對象中。
Example:
var frag = document.createDocumentFragment();
frag.appendChild(document.createTextNode('Ipsum Lorem'));
document.body.appendChild(frag);

===========================================
document.createDocumentFragment()说白了就是为了节约使用DOM。每次JavaScript对DOM的操作都会改变页面的变现,并重新刷新整个页面,从而消耗了大量的时间。为解决这个问题,可以创建一个文档碎片,把所有的新节点附加其上,然后把文档碎片的内容一次性添加到document中。
var oui=document.getElementById("oItem");
for(var i=0;i<10;i++)
{
 var oli=document.createElement("li");
 oui.appendChild(oli);
 oli.appendChild(document.createTextNode("Item"+i));
...

阅读全文...