Javascript 代码片断

来自百合仙子's Wiki
(重定向自Javascript代码片断
跳转到导航 跳转到搜索

字符串处理

加密/解密

rot13

String.prototype.rot13 = function(){
  return this.replace(/[a-zA-Z]/g, function(c){
    return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);
  });
};

cookie相关

function setCookie(c_name,value,expiredays){
  var exdate=new Date();
  exdate.setDate(exdate.getDate()+expiredays);
  document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
function getCookie(c_name){
  if(document.cookie.length>0){
    c_start=document.cookie.indexOf(c_name + "=")
      if(c_start!=-1){ 
	c_start=c_start + c_name.length+1;
	c_end=document.cookie.indexOf(";",c_start);
	if (c_end==-1) c_end=document.cookie.length;
	return unescape(document.cookie.substring(c_start,c_end));
      } 
  }
  return "";
}

DOM

function getStyle(dom){
  var style;
  var returns = '';
  var camelize = function(a, b){
    return b.toUpperCase();
  };
  style = window.getComputedStyle(dom, null);
  for(var i = 0, l = style.length; i < l; i++){
    var prop = style[i];
    var camel = prop.replace(/\-([a-z])/g, camelize);
    var val = style.getPropertyValue(prop);
    returns += camel + ': ' + val + '\n';
  }
  return returns;
}

XML与字符串的互转

String.prototype.toxml = function(){
  if(navigator.userAgent.indexOf('MSIE')>-1){
    xml = new ActiveXObject("Microsoft.XMLDOM");
    xml.async = false;
    xml.loadXML(this);
  }else{
    xml = (new DOMParser()).parseFromString(this, 'text/xml');
  }
  return xml;
};

XMLDocument.prototype.toString = function(){
  return (new XMLSerializer()).serializeToString(this);
};

高亮表格的行和列(>= jQuery 1.4.2):

$("table").delegate('td','mouseover mouseleave', function(e) {
  if (e.type == 'mouseover') {
    $(this).parent().addClass("hover");
    $("colgroup").eq($(this).index()).addClass("hover");
  } else {
    $(this).parent().removeClass("hover");
    $("colgroup").eq($(this).index()).removeClass("hover");
  }
});

来源:CSS-Tricks: Table Row and Column Highlighting

表单

文件

读取文件

文件的读取使用 FileReader 对象。读取是异步进行的。目前只有火狐(3.6+)支持。Chrome存在相应的对象和文件( readAsBinaryString ),但实际上不能读取到文件。

var file = $('#input-file')[0].files[0];
var reader = new FileReader();
reader.onload = function(load){
  alert(load.target.result);
}
reader.onerror = function(e){
  $('#error').text('文件读取失败。').show();
}
reader.readAsBinaryString(file);

浏览器功能

添加书签

var addFav=function(url,title){
  if(window.sidebar&&"object"==typeof (window.sidebar)&&"function"==typeof (window.sidebar.addPanel)){
    window.sidebar.addPanel(title,url,"")
  }else{
    if(document.all&&"object"==typeof (window.external)){
      window.external.addFavorite(url,title)
    }
  }
};

事件

模拟事件

火狐下可使用如下代码[1]

function simulateClick() {
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);
  var cb = document.getElementById("checkbox"); 
  var canceled = !cb.dispatchEvent(evt);
  if(canceled) {
    // A handler called preventDefault
    alert("canceled");
  } else {
    // None of the handlers called preventDefault
    alert("not canceled");
  }
}

参见

参考资料