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 相关文章推荐
jQuery 全选效果实现代码
Mar 23 Javascript
Javascript动态绑定事件的简单实现代码
Dec 25 Javascript
js获取日期:昨天今天和明天、后天
Jun 11 Javascript
AngularJS ng-template寄宿方式用法分析
Nov 07 Javascript
Vue路由跳转问题记录详解
Jun 15 Javascript
微信小程序 Buffer缓冲区的详解
Jul 06 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
iview同时验证多个表单问题总结
Sep 29 Javascript
JavaScript数组去重的方法总结【12种方法,号称史上最全】
Feb 28 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
Jul 03 Javascript
vue学习笔记之Vue中css动画原理简单示例
Feb 29 Javascript
vue fetch中的.then()的正确使用方法
Apr 17 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 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
详解PHP对象的串行化与反串行化
2016/01/24 PHP
微信支付开发告警通知实例
2016/07/12 PHP
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
JavaScript中isPrototypeOf函数作用和使用实例
2015/06/01 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
详解redis在nodejs中的应用
2018/05/02 NodeJs
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
webpack 开发和生产并行设置的方法
2018/11/08 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
[01:39:04]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第二场 2月1日
2021/03/11 DOTA
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
redis之django-redis的简单缓存使用
2018/06/07 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
使用python将请求的requests headers参数格式化方法
2019/01/02 Python
python 多线程串行和并行的实例
2019/02/22 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
python装饰器代替set get方法实例
2019/12/19 Python
python3.6连接mysql数据库及增删改查操作详解
2020/02/10 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
Linux系统下升级pip的完整步骤
2021/01/31 Python
世界上最好的帽子:Tilley
2016/11/27 全球购物
Desigual德国官网:在线购买原创服装
2018/03/27 全球购物
一道Delphi面试题
2016/10/28 面试题
毕业生自荐信的主要内容
2013/10/29 职场文书
会议活动邀请函
2014/01/27 职场文书
超市仓管员岗位职责
2014/04/07 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
辞职信的写法
2015/02/27 职场文书
通知的写法
2015/04/23 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
如何通过cmd 连接阿里云服务器
2022/04/18 Servers
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python