JavaScript常用脚本汇总(二)
把JavaScript中的伪数组转换为真数组
在JavaScript中,函数中的隐藏变量arguments和用getElementsByTagName获得的元素集合(NodeList)都不是真正的数组,不能使用push等方法,在有这种需要的时候只能先转换为真正的数组。
对于arguments,可以使用Array.prototype.slice.call(arguments);来达到转换的目的,但对于NodeList则不行了,其在IE8及以下将会报错,只能说其JS引擎有所限制。
因此,如果需要把NodeList转换为真正的数组,则需要做下兼容处理。
functionrealArray(c){ try{ returnArray.prototype.slice.call(c); }catch(e){ varret=[],i=0,len=c.length; for(;i<len;i++){ ret[i]=(c[i]); } returnret; } }
JavaScript设置主页功能
<!DOCTYPEhtml> <html> <head> <title>JavaScript设置“设为首页”和“收藏页面”(兼容IE和火狐浏览器)</title> <metacharset="utf-8"> <scripttype="text/javascript"> functionsetHomepage(){ if(document.all){ /*IE*/ document.body.style.behavior='url(#default#homepage)'; document.body.setHomePage(window.location.href); }elseif(window.sidebar){ /*FF*/ if(window.netscape){ try{ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); }catch(e){ alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入about:config,然后将项signed.applets.codebase_principal_support值该为true"); } } varprefs=Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch); prefs.setCharPref('browser.startup.homepage',window.location.href); }else{ /*chrome或者其他*/ alert("您的浏览器不支持自动自动设置首页,请使用浏览器菜单手动设置!"); } } </script> </head> <body> <aonclick="setHomepage()"title="设为首页"href="javascript:void(0);">设为首页</a> </body> </html>
JavaScript收藏功能
<!DOCTYPEhtml> <html> <head> <title>demo</title> <metacharset="utf-8"> <scriptsrc="https://code.jquery.com/jquery-1.11.0.min.js"></script> <scriptsrc="https://code.jquery.com/jquery-migrate-1.2.1.min.js"></script> <scripttype="text/javascript"> jQuery.fn.addFavorite=function(l,h){ returnthis.click(function(){ vart=jQuery(this); if(jQuery.browser.msie){ window.external.addFavorite(h,l); }elseif(jQuery.browser.mozilla||jQuery.browser.opera){ t.attr("rel","sidebar"); t.attr("title",l); t.attr("href",h); }else{ alert("请使用Ctrl+D将本页加入收藏夹!"); } }); }; $(function(){ $('#fav').addFavorite(document.title,location.href); }); </script> </head> <body> <ahref="javascript:;"title="收藏本站"id="fav">收藏本站</a> </body> </html>
基于JQuery的,你可以根据自己的需求来修改。
javascript检测元素是否支持某个属性代码
functionelementSupportsAttribute(element,attribute){ vartest=document.createElement(element); if(attributeintest){ returntrue; }else{ returnfalse; } };
用法:
if(elementSupportsAttribute("textarea","placeholder"){ }else{ //fallback }
创建和使用命名空间
varGLOBAL={}; GLOBAL.namespace=function(str){ vararr=str.split('.'),o=GLOBAL; for(k=(arr[0]=="GLOBAL")?1:0;k<arr.length;k++){ o[arr[k]]=o[arr[k]]||{}; o=o[arr[k]]; } }
使用方式
GLOBAL.namespace("Lang"); GLOBAL.Lang.test=function(){ //todo }
以上就是本文的全部内容了,希望大家能够喜欢。