1. 程式人生 > >0004-JavaScript常用方法

0004-JavaScript常用方法

使用ES6風格,變數宣告多用let const。

1、獲取URL絕對路徑(去掉域名與引數)

function getUrlAbsolutePath() {    
   const url = location.href,
   arrUrl = url.split("//"),
   start = arrUrl[1].indexOf("/");
   let relUrl = arrUrl[1].substring(start); //擷取從start開始到結尾的所有字元
   if (relUrl.indexOf("?") != -1) {
     relUrl = relUrl.split("?")[0];    
   }    
  return relUrl;  
}

2、獲取URL中的引數

function getParams() {
  const url = location.search; //獲取url中"?"符後的字串
  let theRequest = {};
  if (url.indexOf("?") != -1) {
    const str = url.substr(1),
    strs = str.split("&");
    for(let i = 0; i < strs.length; i ++) {
      let arrParam = strs[i].split("=");
      theRequest[arrParam[0]] = unescape(decodeURIComponent(arrParam[1]));//中文字元
    }
  }
  return theRequest;
}

3、獲取指定的引數

function getQueryString(name) {
  const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
  const r = location.search.substr(1).match(reg);
  if (r) {
    return unescape(r[2]);
  }
  return null;
}

4、Ajax請求顯示載入中

$.ajax({
  type: "post",
  url: loadurl,
  async: true,
  t: new Date().getTime(), //時間戳
  success(data) {
    $("#test").html(data);
  }
  beforeSend() {
    $("#test").html('載入中...');
  }
});

5、字串大小長度獲取(支援中文)

在字串沒有中文的情況用str.length直接獲取,是可以的。因為中文佔兩個位元組,所以在包含中文字串的情況下,這樣是不正確的。

function getRealLen(str) {
  ///<summary>獲得字串實際長度</summary>
  ///<param name="str">要獲取長度的字串</param>
  let realLength = 0,
  len = str.length,
  charCode = -1;
  for (let i = 0; i < len; i++) {
    let charCode = str.charCodeAt(i);
    if (charCode >= 0 && charCode <= 128)
     realLength += 1;
   else
     realLength += 2;
  }
  return realLength;
};

6、window.open開啟之後彈窗後再關閉重新整理本頁面

使用window.open開啟彈窗後,在彈窗頁面關閉時,上級頁面重新整理。(注:此函式放置在父頁面中)

function openWin(url,text,winInfo){
 	const winObj = window.open(url,text,winInfo);
 	let loop = setInterval(function() {     
 	    if(winObj.closed) {    
 	        clearInterval(loop);       
 	        location.reload(); 
 	    }    
 	}, 1);   
 }