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
}
以上就是本文的全部内容了,希望大家能够喜欢。