惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
T
The Exploit Database - CXSecurity.com
Help Net Security
Help Net Security
腾讯CDC
Project Zero
Project Zero
C
CXSECURITY Database RSS Feed - CXSecurity.com
IT之家
IT之家
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Darknet – Hacking Tools, Hacker News & Cyber Security
L
LINUX DO - 最新话题
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
T
Threatpost
N
News | PayPal Newsroom
C
Cybersecurity and Infrastructure Security Agency CISA
Hacker News - Newest:
Hacker News - Newest: "LLM"
S
SegmentFault 最新的问题
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Proofpoint News Feed
A
Arctic Wolf
B
Blog RSS Feed
Forbes - Security
Forbes - Security
P
Privacy & Cybersecurity Law Blog
Attack and Defense Labs
Attack and Defense Labs
V2EX - 技术
V2EX - 技术
P
Proofpoint News Feed
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
阮一峰的网络日志
阮一峰的网络日志
aimingoo的专栏
aimingoo的专栏
T
Tenable Blog
MyScale Blog
MyScale Blog
U
Unit 42
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学
W
WeLiveSecurity
D
DataBreaches.Net
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
有赞技术团队
有赞技术团队
Martin Fowler
Martin Fowler
罗磊的独立博客
The Last Watchdog
The Last Watchdog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Vulnerabilities – Threatpost
美团技术团队
Microsoft Security Blog
Microsoft Security Blog

博客园 - Star.Stroll

【Chrome扩展】Reload image 重载图片 [原创]虚拟化技术真的能让企业降低成本吗? [原创]纯Java获得本地MAC地址 [原创]GCC动态链接库的编译与使用简例 [原创]Cygwin的中文支持(解决乱码) [原创]程序员日志:自制随笔程序 [原创]程序员日志:程序员的快捷方式 [原创]Java Socket(套接字)自学笔记1 [原创]透明的DIV提示框(兼容IE与Firefox) 深入HashCode方法 JavaScript代码实例:拖动对象 Drag Object (兼容:IE、Firefox、Opera ... ) Tomcat中用web.xml控制Web应用详解(2) Tomcat中用web.xml控制Web应用详解(1) java.sql.ResultSet 新增、更新、刪除資料 [原创]一个简单例子解释 Java 工厂模式 [原创]Object.clone()的作用与用法 Java 范型编程 Singleton模式(单态模式) Builder模式
[原创]RegularJS
Star.Stroll · 2009-07-26 · via 博客园 - Star.Stroll

数个项目的总结,框架为填补现今Ajax框架的不足而生,命名为RegularJS,后续将会不断更新。

/********************************************************
 * RegularJS framework
 *
 * verson: 0.1
 * author: star.stroll
 * 
 * 支持Firefox2与IE6或更高版本,其他浏览器待测.
 * 
 *******************************************************
*//****************************
 * 源生对象方法填补
 ***************************
*/// 字符串去除前后空格
String.prototype.trim = function(){
    
return this.replace(/(^\s*)|(\s*$)/g, "");
};
// 字符串去除前空格
String.prototype.trimLeft = function(){
    
return this.replace(/^\s*/g, "");
};
// 字符串去除后空格
String.prototype.trimRight = function(){
    
return this.replace(/\s*$/g, "");
};
// 把对象转为Array对象,可转换NodeList,arguments等等
Array.toArray = function(obj){
    
var err;
    
try{
        
var ls = [];
        
for(var i=0;i<obj.length;i++){
            ls.push(obj[i]);
        }
        
return ls;
    }
catch(err){
        
return null;
    }
};
// 移除数组中的成员
Array.prototype.removeItem = function(obj){
    
for(var i=0;i<this.length;i++){
        
if(this[i] == obj){
            
for(var j=i;j<this.length-1;j++){
                
this[j] = this[j+1];
            }
            
this.pop();
        }
    }
    
return this;
};
// 移除数组中的成员,相比removeItem速度要快,但循序不能维持原状
Array.prototype.removeItemFast = function(obj){
    
for(var i=0;i<this.length;i++){
        
if(this[i] == obj){
            
this[i] = this[this.length-1];
            
this.pop();
        }
    }
    
return this;
};
// 移除数组中所有成员
Array.prototype.removeAll = function(){
    
while(this.length!=0){
        
this.pop();
    }
    
return this;
};
// 效果与concat效果相似,区别在于pushAll将修改源数组
Array.prototype.pushAll = function(ls){
    
for(var i=0;i<ls.length;i++){
        
this.push(ls[i]);
    }
    
return this;
};
// 将一个或多个成员插入到指定位置
Array.prototype.insert = function(){
    
if(arguments.length == 1){
        
this.push(arguments[0]);
    }
var index = Number(arguments[0]);
    
if(arguments.length > 1 && index>=0 && index < this.length){
        
var items = Array.toArray(arguments).slice(1);
        
var hl = this.slice(0,index);
        
var fl = this.slice(index,this.length);
        
this.removeAll();
        
this.pushAll(hl.concat(items).concat(fl));
    }
    
return this;
};
// 将一个或多个数组中的所有成员插入到指定位置
Array.prototype.insertAll = function(){
    
if(arguments.length == 1){
        
this.pushAll(arguments[0]);
    }
var index = Number(arguments[0]);
    
if(arguments.length > 1 && index>=0 && index < this.length){
        
var items = Array.toArray(arguments).slice(1);
        
var concatItems = [];
        
for(var i=0;i<items.length;i++){
            concatItems.pushAll(items[i]);
        }
        
var hl = this.slice(0,index);
        
var fl = this.slice(index,this.length);
        
this.removeAll();
        
this.pushAll(hl.concat(concatItems).concat(fl));
    }
    
return this;
};
/****************************
 * 以下是自定义对象与方法
 ***************************
*/// 简化扩展document.getElementById方法
= function (){
    
if(arguments.length > 1){
        
for (var i = 0, elements = [], length = arguments.length; i < length; i++){
            elements.push($(arguments[i]));
        }
        
return elements;
    }
    
return document.getElementById(arguments[0].toString());
};
// 简化扩展document.getElementsByName方法
$N = function (name){
    
if(arguments.length > 1){
        
for (var i = 0, elements = [], length = arguments.length; i < length; i++){
            elements.pushAll($N(arguments[i]));
        }
        
return elements;
    }
    
return Array.toArray(document.getElementsByName(arguments[0].toString()));
};
// 简化扩展document.getElementsByTagName方法
$TN = function (tagName){
    
if(arguments.length > 1){
        
for (var i = 0, elements = [], length = arguments.length; i < length; i++){
            elements.pushAll($TN(arguments[i]));
        }
        
return elements;
    }
    
return Array.toArray(document.getElementsByTagName(arguments[0].toString()));
};
// 判断对象是否有效
= function (obj){
    
return obj == null || obj == undefined;
};
// 判断是否为空字符串
_S = function (string){
    
return _(string) || string == "";
};
// 为尽可能使老JS应用兼容Firefox,尽可能少用
if(_(document.all)){
    document.all 
= $TN("*");
}
// Event对象常用方法
EventUtil = {
    
// 获取浏览器源生Event对象
    "getOriginalEventObject" : function(){
        
var err;
        
try{
            
var e = window.event;
            
if(!_(e)){
                
return e;
            }
else{
                pcaller 
= this["getOriginalEventObject"].caller;
                    
while(!(e instanceof Event) && !_(pcaller)){
                    e 
= pcaller.arguments[0];
                    pcaller 
= pcaller.caller;
                }
                
return (e instanceof Event) ? e : undefined;
            }
        }
catch(err){
            
return undefined;
        }
    },
    
// 获得更好兼容性的Event对象
    "getEventObject" : function(){
        
var org = this.getOriginalEventObject();
        
if(_(org.target) && !_(org.srcElement)){
            org.target 
= org.srcElement;
        }
    }
};

2009-08-09 添加:

// 提高IE浏览器拼装字符串的效率
StringBuffer = function(string){
    
var buff = _(string) ? [] : [string];
    
var flag = true;
    
var value = "";
    
this.append = function(string){
        buff.push(string);
        flag 
= true;
        
return this;
    };
    
    
this.toString = function(){
        
if(flag){
            value 
= buff.join('');
            flag 
= false;
        }
        
return value;
    };
this.length = function(){
        
return this.toString().length;
    };
};

未完待续……