JavaScript常用脚本汇总(二)


Posted in Javascript onMarch 04, 2015

把JavaScript中的伪数组转换为真数组

在 JavaScript 中, 函数中的隐藏变量 arguments 和用 getElementsByTagName 获得的元素集合(NodeList)都不是真正的数组,不能使用 push 等方法,在有这种需要的时候只能先转换为真正的数组。

对于 arguments,可以使用 Array.prototype.slice.call(arguments); 来达到转换的目的,但对于 NodeList 则不行了,其在 IE8 及以下将会报错,只能说其 JS 引擎有所限制。

因此,如果需要把 NodeList 转换为真正的数组,则需要做下兼容处理。

function realArray(c) {

    try {

        return Array.prototype.slice.call(c);

    } catch (e) {

        var ret = [], i = 0, len = c.length;

        for (; i < len; i++) {

            ret[i] = (c[i]);

        }

        return ret;

    }

}

JavaScript设置主页功能

<!DOCTYPE html>

<html>

<head>

    <title>JavaScript设置“设为首页”和“收藏页面”(兼容IE和火狐浏览器)</title>

    <meta charset="utf-8">

    <script type="text/javascript">

        function setHomepage() {

            if (document.all) {

                /*IE*/

                document.body.style.behavior = 'url(#default#homepage)';

                document.body.setHomePage(window.location.href);

            } else if (window.sidebar) {

                /*FF*/

                if (window.netscape) {

                    try {

                        netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

                    } catch (e) {

                        alert("该操作被浏览器拒绝,如果想启用该功能,请在地址栏内输入 about:config,然后将项 signed.applets.codebase_principal_support值该为true");

                    }

                }

                var prefs = 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>

    <a onclick="setHomepage()" title="设为首页" href="javascript:void(0);">设为首页</a>

</body>

</html>

JavaScript收藏功能

<!DOCTYPE html>

<html>

<head>

    <title>demo</title>

    <meta charset="utf-8">

    <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>

    <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

    <script type="text/javascript">

        jQuery.fn.addFavorite = function(l, h) {

            return this.click(function() {

                var t = jQuery(this);

                if(jQuery.browser.msie) {

                    window.external.addFavorite(h, l);

                } else if (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>

    <a href="javascript:;" title="收藏本站" id="fav">收藏本站</a>

</body>

</html> 

基于JQuery的,你可以根据自己的需求来修改。

javascript检测元素是否支持某个属性代码

function elementSupportsAttribute(element, attribute) {

  var test = document.createElement(element);

  if (attribute in test) {

    return true;

  } else {

    return false;

  }

};

用法:

if (elementSupportsAttribute("textarea", "placeholder") {

} else {

   // fallback

}

创建和使用命名空间

var GLOBAL = {};

GLOBAL.namespace = function(str){

var arr = 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

}

以上就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(7)
Dec 23 Javascript
JavaScript与C# Windows应用程序交互方法
Jun 29 Javascript
JQuery 选择器、过滤器介绍
Feb 14 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
分享使用AngularJS创建应用的5个框架
Dec 05 Javascript
用JS中split方法实现彩色文字背景效果实例
Aug 24 Javascript
AngularJS 霸道的过滤器小结
Apr 26 Javascript
详解如何用模块化的方式写vuejs
Dec 16 Javascript
详解node.js中的npm和webpack配置方法
Jan 21 Javascript
Vue 中mixin 的用法详解
Apr 23 Javascript
JavaScript设计模式之代理模式简单实例教程
Jul 03 Javascript
JavaScript对象访问器Getter及Setter原理解析
Dec 08 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
Mar 04 #Javascript
JavaScript常用脚本汇总(一)
Mar 04 #Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
Mar 04 #Javascript
js实现iGoogleDivDrag模块拖动层拖动特效的方法
Mar 04 #Javascript
JavaScript中的关联数组问题
Mar 04 #Javascript
JavaScript中常见获取元素的方法汇总
Mar 04 #Javascript
深入理解JavaScript系列(17):面向对象编程之概论详细介绍
Mar 04 #Javascript
You might like
PHP动态图像的创建
2006/10/09 PHP
基于curl数据采集之单页面采集函数get_html的使用
2013/04/28 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
PHP中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
php利用新浪接口查询ip获取地理位置示例
2014/01/20 PHP
php实现文件编码批量转换
2014/03/10 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
aspx中利用js实现确认删除代码
2010/07/22 Javascript
ajax 缓存 问题 requestheader
2010/08/01 Javascript
jQuery mobile 移动web(4)
2015/12/20 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
js实现分页功能
2017/05/24 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
[01:07:19]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第一场
2018/04/06 DOTA
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
使用PDB模式调试Python程序介绍
2015/04/05 Python
Python实现获取汉字偏旁部首的方法示例【测试可用】
2018/12/18 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
python实现引用其他路径包里面的模块
2020/03/09 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
美国家居装饰网上商店:Lulu & Georgia
2019/09/14 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
生态学毕业生自荐信
2013/10/27 职场文书
迅雷Cued工作心得体会
2014/01/27 职场文书
卫生院健康教育实施方案
2014/06/07 职场文书
在校实习生求职信
2014/06/18 职场文书
婚庆答谢词
2015/01/04 职场文书
高考学习决心书
2015/02/04 职场文书
员工离职通知函
2015/04/25 职场文书