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 相关文章推荐
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
Nov 23 Javascript
面向对象继承实例(a如何继承b问题)(自写)
Jul 01 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
什么是 AngularJS?AngularJS简介
Dec 06 Javascript
两种js监听滚轮事件的实现方法
May 13 Javascript
JS实现旋转木马式图片轮播效果
Jan 18 Javascript
使用jQuery和ajax代替iframe的方法(详解)
Apr 12 jQuery
vue中使用ueditor富文本编辑器
Feb 08 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
Jul 12 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
May 12 jQuery
JSX在render函数中的应用详解
Sep 04 Javascript
解决antd的Form组件setFieldsValue的警告问题
Oct 29 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 self与$this的详解
2013/06/08 PHP
PHP中使用xmlreader读取xml数据示例
2014/12/29 PHP
微信红包随机生成算法php版
2016/07/21 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
jQuery中将函数赋值给变量的调用方法
2012/03/23 Javascript
document.documentElement和document.body区别介绍
2013/09/16 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
python递归计算N!的方法
2015/05/05 Python
Python实现计算最小编辑距离
2016/03/17 Python
Python整型运算之布尔型、标准整型、长整型操作示例
2017/07/21 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
Numpy之文件存取的示例代码
2018/08/03 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
python里dict变成list实例方法
2019/06/26 Python
Python爬取视频(其实是一篇福利)过程解析
2019/08/01 Python
Django权限控制的使用
2021/01/07 Python
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
深圳茁壮笔试题
2015/05/28 面试题
触摸春天教学反思
2014/02/03 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
自我查摆剖析材料
2014/10/11 职场文书
工作检讨书怎么写
2015/01/23 职场文书
Java spring定时任务详解
2021/10/05 Java/Android
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS