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 闭包引起的IE内存泄露分析
May 23 Javascript
jquery动态加载js三种方法实例
Aug 03 Javascript
JavaScript支持的最大递归调用次数分析
Jun 24 Javascript
js选择并转移导航菜单示例代码
Aug 19 Javascript
JS应用正则表达式转换大小写示例
Sep 18 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
Sep 25 Javascript
10个JavaScript中易犯小错误
Feb 14 Javascript
微信小程序 template模板详解及实例代码
Mar 09 Javascript
Vue.js仿微信聊天窗口展示组件功能
Aug 11 Javascript
JavaScript 完成注册页面表单校验的实例
Aug 19 Javascript
JavaScript表格隔行变色和Tab标签页特效示例【附jQuery版】
Jul 11 jQuery
vue中activated的用法
Jan 03 Vue.js
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
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
php while循环得到循环次数
2013/10/26 PHP
php二维码生成
2015/10/19 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
详解PHP 二维数组排序保持键名不变
2019/03/06 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
html中table数据排序的js代码
2011/08/09 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
九种原生js动画效果
2015/11/11 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
jQuery添加和删除输入文本框标签代码
2016/05/20 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
2017/03/27 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
关于HTML5的data-*自定义属性的总结
2018/05/05 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
vue+element实现打印页面功能
2019/05/20 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
Python编程之多态用法实例详解
2015/05/19 Python
Python中if elif else及缩进的使用简述
2018/05/31 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
Python基于当前时间批量创建文件
2020/05/07 Python
python小白学习包管理器pip安装
2020/06/09 Python
Appium+Python实现简单的自动化登录测试的实现
2021/01/26 Python
英国第一摩托车和摩托车越野配件商店:GhostBikes
2019/03/10 全球购物
高级技校毕业生自荐信
2013/11/18 职场文书
大学生实习自我鉴定
2013/12/11 职场文书
校运会广播稿100字
2014/01/27 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA