var reg = {
"html" : /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/ //匹配html代码
};
var allFinded = [];
/**
* @author wsf
* 检测浏览器版本
*/
var browser = {
"explorer": {
"ie": /msie ([\d.]+).*\.net clr (\d\.){1,2}\d+\)$/,
"firefox": /firefox\/([\d.]+)/,
"chrome": /chrome\/([\d.]+)/,
"opera": /opera.([\d.]+)/,
"safari": /version\/([\d.]+).*safari/,
"se" : /msie ([\d.]+).*\.net clr (\d\.){1,2}\d+; 360se\)$/,//360浏览器
"sougou" : /msie ([\d.]+).*\.net clr (\d\.){1,2}\d+; .*metasr.*\d\)$/,//搜狗浏览器
"maxthon" : /maxthon\/([\d.]+)///遨游浏览器webkit
}
};
/**
* 常用js代码
*/
var oCommon = {
/**
* 改变本地对象的方法
*/
base: function(){
Array.prototype.indexOf = function(vValue){
for (var i = this.length - 1; i >= 0; i--) {
if (this[i] == vValue) {
return i;
}
}
return -1;
};
Array.prototype.deleteIndex = function(index){
var t = this.slice(index, index + 1);
this.splice(index, 1);
};
Array.prototype.deleteVal = function(val){
var index = this.indexOf(val);
this.deleteIndex(index);
};
/**
* 判断浏览器代码
*/
var userAgent = navigator.userAgent.toLowerCase();
var expName = null;
(expName = userAgent.match(browser.explorer.ie)) ? browser.ie = expName[1] :
(expName = userAgent.match(browser.explorer.firefox)) ? browser.firefox = expName[1] :
(expName = userAgent.match(browser.explorer.chrome)) ? browser.chrome = expName[1] :
(expName = userAgent.match(browser.explorer.opera)) ? browser.opera = expName[1] :
(expName = userAgent.match(browser.explorer.safari)) ? browser.safari = expName[1] :
(expName = userAgent.match(browser.explorer.se)) ? browser.se = expName[1] :
(expName = userAgent.match(browser.explorer.sougou)) ? browser.sougou = expName[1] :
(expName = userAgent.match(browser.explorer.maxthon)) ? browser.maxthon = expName[1] :
false;
},
/**
* 类选择器解决ie不支持document.getElementByClassName;
* @param {Object} elem
* @param {Object} selector
*/
classSelect: function(elem, selector){
var childNodes = elem.childNodes;
var oClassEle = arguments[2] ? arguments[2] : [];
for (var i = childNodes.length - 1; i >= 0; i--) {
if(!childNodes[i].className)continue;
if (childNodes[i].childNodes.length > 0) {
oCommon.classSelect(childNodes[i], selector, oClassEle);
}
if (childNodes[i].className.indexOf(selector) != -1) {
var thisClass = childNodes[i].className;
var tmp = thisClass.split(/\s/);
if (oCommon.inArray(selector, tmp)) {
oClassEle.push(childNodes[i]);
}
}
}
return oClassEle;
},
/**
* 选择器
*/
select: function(selector){
var flag = selector.charAt(0);
var reg = /[a-zA-Z]/;
var selector = reg.test(flag) ? selector : selector.substring(1);
switch (flag) {
case null:
return null;
break;
case "":
return null;
break;
case ".":
if (document.all) {
return oCommon.classSelect(document.body, selector);
}
else if (document.getElementsByClassName) {
return document.getElementsByClassName(selector);
}
break;
case "#":
var eles = [];
eles[0] = document.getElementById(selector);
return eles;
break;
default:
if(arguments[1])
return arguments[1].getElementsByTagName(selector);
return document.getElementsByTagName(selector);
break;
}
},
/**
* 判断对象是否为空
* @param {Object} obj
*/
isEmptyObj : function(obj){
for(var i in obj){
return false;
}
return true;
},
inArray: function(val, oArray){
for (var i = oArray.length - 1; i >= 0; i--) {
if (oArray[i] === val)
return true;
}
return false;
},
/**
* 兄弟节点
*/
sibling: function(firstSibling, elem){
var siblings = [];
for (; firstSibling; firstSibling = firstSibling.nextSibling)
firstSibling.nodeType === 1 && firstSibling !== elem && siblings.push(firstSibling);
return siblings
},
/**
* 所有兄弟节点
*/
siblings: function(elem){
return oCommon.sibling(elem.parentNode.firstChild, elem);
},
next : function(ele){
return ele.nextSibling;
},
prev : function(ele){
return ele.previousSibling;
},
parent : function(ele){
return ele.parentNode;
},
first : function(ele){
return ele.firstChild;
},
last : function(ele){
return ele.lastChild;
},
hasChild : function(ele){
if(ele.childNodes){
return (ele.childNodes).length > 0;
}
},
find : function(ele,selector){
var kids = ele.childNodes;
for(var i in kids){
var resultFinded = oCommon.children(kids[i],selector);
var kid = kids[i];
if(kid.nodeType !== 1) continue;
if(resultFinded.length > 0) {
for(var k in resultFinded){
allFinded.push(resultFinded[i]);
}
}
if(oCommon.hasChild(kid)){
oCommon.find(kid,selector);
}
}
return allFinded;
},
/**
* 所有子节点或者指定子节点SSS
*/
children: function(parent, selector){
if (selector) {
var kids = oCommon.sibling(parent.firstChild);
var filterKids = oCommon.select(selector);
var temp = [];
for (var i = kids.length - 1; i >= 0; i--) {
for (var j = filterKids.length; j >= 0; j--) {
if (kids[i] === filterKids[j])
temp.push(filterKids[j]);
}
}
return temp;
}
else {
return oCommon.sibling(parent.firstChild);
}
},
child : function(parent,index){
var kids = oCommon.children(parent);
if (!(typeof index === "number")) {
return null;
}
for(var i = kids.length - 1 ; i >= 0 ; i --){
if(i === index - 1){
return kids[i];
}
}
return null;
},
/**
* 所有父节点
*/
parents: function(elem, selector){
var parents = [];
var parent = elem.parentNode;
var filterParents = [];
for (; parent; parent = parent.parentNode) {
parent.nodeType === 1 && parents.push(parent);
}
if (selector) {
filterParents = oCommon.select(selector);
var temp = [];
for (var i = parents.length - 1; i >= 0; i--) {
for (var j = filterParents.length - 1; j >= 0; j--) {
if (parents[i] === filterParents[j]) {
temp.push(filterParents[j]);
}
}
}
return temp;
}
return parents;
},
/**
* 动态改变样式信息
* @param {Object} oEle dom对象
* @param {Object} style 样式信息
*/
css: function(oEle){
var args = arguments;
var len = args.length;
switch (len) {
case 1:
throw new Error("请填写样式信息!");
break;
case 2:
var options = args[1];
if (typeof options === "object") {
for (var key in options) {
eval("oEle.style." + key + " = \"" + options[key] + "\"");
}
}else if(typeof options === "string"){
return eval("oEle.style." + args[1]);
}else{
throw new Error("参数有误!");
}
break;
case 3:
eval("oEle.style." + args[1] + " = \"" + args[2] + "\"");
break;
}
},
html : function(ele,str){
if(!ele){
throw new Error("对象为空!");
}
if(!arguments[1] && "innerHTML" in ele ){
return ele.innerHTML;
}else{
if("innerHTML" in ele){
ele.innerHTML = str;
}else{
throw new Error("此元素不支持innerHTML属性!");
}
}
},
attribute : function(ele,attrName,attrVal){
if(!attrVal){
return ele.attrName;
}else{
ele.attrName = attrVal;
}
},
/**
* 判断是否有样式
* @param {Object} oEle
* @param {Object} className
*/
hasClass : function(oEle , className){
return oEle.className.match(new RegExp('(\\s|^)' + className + '(\\s|$)'));
},
/**
* 添加样式信息
* @param {Object} oEle
* @param {Object} className
*/
addClass : function(oEle,className){
if(! oCommon.hasClass(oEle,className)){
oEle.className += " " + className;
}
},
/**
* 移除样式信息
* @param {Object} oEle
* @param {Object} className
*/
removeClass : function(oEle , className){
if(oCommon.hasClass(oEle,className)){
var _thizClassName = oEle.className;
_thizClassName = oCommon.trim( _thizClassName.replace(className,""));
oEle.className = _thizClassName;
}
},
/**
*
* @param {Object} oEle
* @param {Object} className
*/
toggleClass : function(oEle , className){
if(oCommon.hasClass(oEle,className)){
oCommon.removeClass(oEle,className);
}else {
oCommon.addClass(oEle,className);
}
},
/**
* 动画目前只支持 width height
* @param {Object} id
*/
animate : function(ele){
var elem = ele, f = j = 0, callback, _this = {}, tween = function(t, b, c, d){
return -c * (t /= d) * (t - 2) + b
}
_this.execution = function(key, val, t){
var s = (new Date()).getTime(), d = t || 500, b = parseInt(elem.style[key]) || 0, c = val - b, a = function(){
var t = (new Date()).getTime() - s;
if (t > d) {
t = d;
elem.style[key] = tween(t, b, c, d) + 'px';
j && callback && callback.apply(elem);
return true;
}
elem.style[key] = tween(t, b, c, d) + 'px';
setTimeout(a, 10);
}
a();
}
_this.animate = function(sty, t, fn){
callback = fn;
for (var i in sty) {
j++;
_this.execution(i, parseInt(sty[i]), t);
}
}
return _this;
},
visible : function(ele){
return oCommon.css(ele,"display") !== "none";
},
/**
* @param {Object} ele
* @param {Object} speed
*/
slideDown : function(ele,speed){
var h = oCommon.css(ele, "height");
if(!oCommon.visible(ele)){
oCommon.css(ele,"height","0.000001px");
oCommon.css(ele,"display","block");
}
oCommon.animate(ele).animate({
height: h
}, speed, function(){
});
},
/**
* @param {Object} ele
* @param {Object} speed
*/
slideUp : function(ele,speed){
oCommon.animate(ele).animate({
height: '0px'
}, speed, function(){
oCommon.css(ele,"display","none");
});
},
/**
* @param {Object} ele
* @param {Object} speed
*/
slideToggle : function(ele,speed){
if(oCommon.visible(ele)){
oCommon.slideUp(ele,speed);
}else{
oCommon.slideDown(ele,speed);
}
},
/**
* 去除前端空格
* @param {Object} str
*/
prevTrim : function(str){
str = str.replace(/^\s+/,"");
return str;
},
/**
* 去除后端空格
* @param {Object} str
*/
lastTrim : function(str){
str = str.replace(/\s+$/,"");
return str;
},
/**
* 去除两端、中间的所有空格
* @param {Object} str
*/
middleTrim : function(str){
str = str.replace(/\s+/g,"");
return str;
},
/**
*去除两端空格
* @param {Object} str
*/
trim : function(str){
str = oCommon.prevTrim(str);
str = oCommon.lastTrim(str);
return str;
},
/**
* 对象循环
*/
each : function(object,callback){
if(object && typeof object === "object"){
if(object instanceof Array && object.length === 0){
return;
}
for(i in object){
callback(i,object[i]);
}
}else{
throw new Error("对象不知此此方法!");
}
},
/**
* 生成tab
* @param {Object} target
* @param {Object} length
*/
createTab : function(tabOptions,target){
return oCommon.private.createTab(tabOptions);
},
/**
* ajax请求
*/
ajax: function(options){
var httpRequest = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
httpRequest.onreadystatechange = function(){
var dataType = options.dataType.toLowerCase();
httpRequest.readyState === 4 && httpRequest.status === 200 && options.callback(dataType === "json" ? eval("(" + httpRequest.responseText + ")") : dataType === "xml" ? httpRequest.responseXML : httpRequest.responseText,options.context);
};
httpRequest.open(options.mode, options.url, options.sync);
options.mode.toLowerCase() === "get" ? httpRequest.send(null) : httpRequest.send(options.params);
},
/**
* 调用某方法的target
*/
currentTarget: function(){
return false;
},
/**
* cookie的读写
*/
cookie : function(){
this.flag = false;
if(!this.flag){
/**
* 利用正则表达式根据cookie名取得cookie值
* @param {Object} key
*/
oCommon.cookie.prototype.getCookie = function(key){
var arr = document.cookie.match(new RegExp("(^|\s*)" + key + "=([^;]*)(;|$)"));
return arr ? decodeURIComponent(arr[2]) : null;
}
/**
* 添加cookie
* @param {Object} name
* @param {Object} value
* @param {Object} expires 单位为分钟
* @param {Object} path
* @param {Object} domain
* @param {Object} secure
*/
oCommon.cookie.prototype.setCookie = function(name, value, expires, path, domain, secure){
var date ;
if(expires === 0){
date = new Date(0);
expires = date.toUTCString() ;
}else{
if(expires && (typeof expires === "number")){
date = new Date();
date.setTime(date.getTime() + expires * 60 * 1000);
}else{
date = expires;
}
expires = expires ? date.toUTCString(): false;
}
document.cookie = name + "=" + encodeURIComponent(value) +
((expires) ? "; expires=" + expires : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "");
}
/**
* 删除cookie
* @param {Object} key
*/
oCommon.cookie.prototype.delCookie = function(key){
this.getCookie(key) ? document.cookie = key + "=;expires=Thu, 1 Jan 1970 00:00:00 UTC" : false;
}
/**
* 清空所有cookie信息
*/
oCommon.cookie.prototype.clearCookie = function(){
var arr = document.cookie.split(";");
for(i in arr){
this.delCookie(arr[i].split("=")[0]);
};
}
this.flag = true;
}
},
/**
* 模拟Map
*/
Map : function(){
this.flag = false;
this.store = new Array();
if(!this.flag){
oCommon.Map.prototype.structure = function(key,val){
this.key = key;
this.val = val;
}
oCommon.Map.prototype.put = function (key,val){
for(var i = this.store.length - 1 ; i >= 0 ; i --){
this.store[i].key === key && this.store[i].val === val ;
}
this.store[this.store.length] = new this.structure(key,val);
}
oCommon.Map.prototype.get = function(key){
for(var i = this.store.length - 1 ; i >= 0 ; i --){
if(this.store[i].key === key) return this.store[i].val;
}
return null;
}
oCommon.Map.prototype.remove = function(key){
for(var i = this.store.length - 1 ; i >= 0 ; i --){
this.store[i].key === key && this.store.splice(i,1);
}
}
oCommon.Map.prototype.keySet = function(){
var keys = new Array();
for(var i = 0 ; i <= this.store.length - 1 ; i ++){
keys.push(this.store[i].key);
}
return keys;
}
oCommon.Map.prototype.valSet = function(){
var vals = new Array();
for(var i = 0 ; i <= this.store.length - 1 ; i ++){
vals.push(this.store[i].val);
}
return vals;
}
oCommon.Map.prototype.clear = function(){
this.store.length = 0;
}
oCommon.Map.prototype.size = function(){
return this.store.length;
}
}
},
/**
* 模拟StringBuilder
*/
StringBuilder : function(){
this.vStrings = new Array();
this.flag = false;
if(!this.flag){
oCommon.StringBuilder.prototype.append = function(str){
this.vStrings.push(str);
}
oCommon.StringBuilder.prototype.toString = function(){
return this.vStrings.join("");
}
oCommon.StringBuilder.prototype.charAt = function(index){
return this.toString().charAt(index);
}
oCommon.StringBuilder.prototype.clear = function(){
this.vStrings.length = 0;
}
oCommon.StringBuilder.prototype.Delete = function (start,end){
var tempString = this.toString();
var prevString = tempString.substring(0,start);
var nextString = end ? tempString.substring(end) : tempString.substring(start+1);
this.clear();
this.append(prevString);
this.append(nextString);
}
oCommon.StringBuilder.prototype.length = function(){
return this.toString().length;
}
oCommon.StringBuilder.prototype.substring = function(start,end){
return this.toString().substring(start,end);
}
oCommon.StringBuilder.prototype.replace = function(oldStr,newStr){
var newStr = newStr ? newStr : "";
var tempString = this.toString().replace(new RegExp(oldStr,"g"),newStr);
this.clear();
this.append(tempString);
}
oCommon.StringBuilder.prototype.indexOf = function (val){
return this.toString().indexOf(val);
}
oCommon.StringBuilder.prototype.lastIndexOf = function(val){
return this.toString().lastIndexOf(val);
}
oCommon.StringBuilder.prototype.insert = function (offset,str){
var prevString = this.substring(0,offset);
var middleString = str;
var nextString = this.substring(offset);
this.clear();
this.append(prevString);
this.append(middleString);
this.append(nextString);
}
this.flag = true;
}
}
}
分享到:
相关推荐
//自定义对象匿名函数 function Person() { this.getName = function(name) { alert('Call' + name); } } var p = new Person(); var _p_getName = null; function mygetName(name){alert("Hooked");} p.getName....
自定义函数参数传递为 字符串格式 ,传递方式 1:用this传递 2:引号缺省 3:转义字符(html中 代表”双引号,'代表单引号,javascript中直接\” 和Java通用转义字符集) <html> <head> [removed] ...
javascript 添加和移除函数的通用方法, 需要的朋友可以参考下。
[removed] /* * 组合模式: 构造函数模式+原型模式 这种方式是javascript中最通用的创建对象的方式 变量类型属性:用构造函数传递 函数类型属性:用原型模式声明 */ function Student(name,age){ this.name=name;...
1.7 学习和使用JavaScript的几点建议 1.8 关于本书的其余部分 第2章 浏览器中的JavaScript 2.1 嵌入网页的可执行内容 2.2 赏心悦目的特效 2.3 使用JavaScript来与用户交互 2.4 绕开脚本陷阱 ...
支持配置自定义工具栏按钮和按钮的回调函数; 支持针对(github 项目的)API 文档的 tags 和 issues 等按钮的跳转; 支持自定义图标的自定义按钮,并且支持配置自定义按钮的触发事件和事件处理器; 自动为文章页面...
jslib jslib 是一组通用的 Javascript 类。 他们不依赖于任何特定的项目并且做非常基本的事情。自动画布.js 构建一个自动调整大小的全屏 HTML 画布。Contemplate.js 超轻量级的 HTML5 模板系统。 支持子模板化。 ...
7:PHP函数和自定义函数 8:Mysql 简介和创建新的数据库 9:数据库中的常用SQL语句 10:MYSQL在PHP5中的应用 11:学习制作PHP+MYSQL留言板(上) 12:学习制作PHP+MYSQL留言板(下) 13:PHP+MYSQL分页原理 14:PHP...
通用javascript函数的集合。 JSUS助您一臂之力! 图书馆 OBJ 大批 时间 评估 DOM 随机的 帕斯 FS 兼容性 队列 浏览器 在浏览器中,将导出两个对象: JSUS及其简写J 建造 使用bin目录中的make文件创建JSUS.js的...
47.当在超链接中调用JS函数时用:(javascript :)来开头后面加函数名 48.在老的浏览器中不执行此JS:<!-- //--> 49.引用一个文件式的JS:<script type="text/javascript" src="aaa.js"> 50.指定在不支持脚本的浏览器显示...
这是一个javascript通用模块定义包装器。 它允许您仅指定三个简单的内容,并自动获得一个包装好的模块,该模块可以在浏览器中使用,也可以与所有requirejs一起使用,同时保持使用自定义版本或别名版本覆盖依赖项的...
13、通用事件绑定/ 编写一个通用的事件监听函数?(必会) 110 14、dom 和 bom 的区别(必会) 111 15、事件三要素(必会) 111 16、事件执行过程(必会) 111 17、获取元素位置(必会) 112 18、封装运动函数(必会...
使用input和output功能可自定义输入/输出处理:input 一个对象,其中每个属性都包含一组函数,这些函数用于确定在接收MIDI输入消息时的更新值。 可选的。 const controller = GenericMIDI ( { buttons : [ msg => ...
自定义通用System.Web.UI.IHierarchicalDataSource简单实现 在 ASP.NET 2.0 中创建 Web 应用程序主题 ASP.NET 2.0 中的数据访问 ASP.NET 2.0:弃用 DataGrid 吧,有新的网格控件了! 将 ASP.NET 2.0 应用程序服务...
03 高阶函数使用 04 函数闭包 05 函数闭包装饰器基本实现 06 函数闭包加上返回值 07 函数闭包加上参数 08 函数闭包补充:解压序列 09 函数闭包为函数加上认证功能 10 函数闭包模拟session 11 函数闭包装饰器运行流程...
PHP100视频教程7:PHP函数和自定义函数 PHP100视频教程8:Mysql 简介和创建新的数据库 PHP100视频教程9:数据库中的常用SQL语句 PHP100视频教程10:MYSQL在PHP5中的应用 PHP100视频教程11:学习制作PHP+MYSQL...
20.4节在JavaScript中调用ActionScript方法函数 20.5节经由BrowserManager改变HTML页面标题 20.6节BrowserManager解析URL 20.7节经由BrowserManager深度-链接到数据 20.8节经由BrowserManager深度-链接容器 20.9节...
3.1.1 验证控件与JavaScript 85 3.1.2 使用Page.IsValid 85 3.1.3 设置Display属性 86 3.1.4 突出显示验证错误 86 3.1.5 使用验证组 90 3.1.6 禁用验证 93 3.2 使用RequiredFieldValidator控件 94 3.3 使用...
调用存储过程通用类DBHelper 加密解密 SQL常用DBHelper Asp.net存储过程无限分类 TreeView无限分类 无限分类MVC 荧光棒效果获取控件上全选 回车转换成Tab DataGrid超级连接列 DataGrid行随鼠标...