JavaScript常用脚本汇总(二)

  把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

  }

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