日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript 常用工具函数

發布時間:2024/9/27 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript 常用工具函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1. 為元素添加 on 方法
  • 2. 為元素添加trigger方法
  • 3. 轉義 HTML 標簽
  • 4. HTML 標簽轉義
  • 5. 跨瀏覽器綁定事件
  • 5. 加入收藏夾
  • 7. 提取頁面代碼中所有網址
  • 8. 動態加載腳本文件
  • 9. 返回頂部的通用方法
  • 10. 實現base64解碼
  • 11. 確認是否是鍵盤有效輸入值
  • 12. 全角半角轉換
  • 13. 版本對比
  • 14. 壓縮CSS樣式代碼
  • 15. 獲取當前路徑
  • 16. 字符串長度截取
  • 17. 時間日期格式轉換
  • 18. 跨瀏覽器刪除事件
  • 19. 判斷是否以某個字符串結束
  • 20. 返回腳本內容
  • 21. 格式化CSS樣式代碼
  • 22. 獲取Cookie值
  • 23. 獲得URL中GET參數值
  • 24. 獲取移動設備初始化大小
  • 25. 獲取頁面高度
  • 26. 獲取頁面scrollLeft
  • 27. 獲取頁面scrollTop
  • 28. 獲取頁面可視高度
  • 29. 獲取頁面可視寬度
  • 30. 獲取頁面寬度
  • 31. 獲取移動設備屏幕寬度
  • 32. 獲取網頁被卷去的位置
  • 33. 獲取URL上的參數
  • 34. 檢驗URL鏈接是否有效
  • 35. 獲取窗體可見范圍的寬與高
  • 36. 獲取移動設備最大化大小
  • 37. 判斷是否安卓移動設備訪問
  • 38. 判斷是否蘋果移動設備訪問
  • 39. 判斷是否為數字類型
  • 40. 是否是某類手機型號
  • 41. 判斷是否移動設備
  • 42. 判斷是否手機號碼
  • 43. 判斷是否是移動設備訪問
  • 44. 判斷鼠標是否移出事件
  • 45. 判斷是否Touch屏幕
  • 46. 判斷是否為網址
  • 47. 判斷是否打開視窗
  • 48. 加載樣式文件
  • 49. 替換地址欄
  • 50. 解決offsetX兼容性問題
  • 51. 打開一個窗體通用方法
  • 52. 將鍵值對拼接成URL帶參數
  • 53. 去掉url前綴
  • 54. 替換全部
  • 55. resize的操作
  • 56. 滾動到頂部
  • 57. 設置Cookie值
  • 58. 設為首頁
  • 59. 按字母排序,對每行進行數組排序
  • 60. 延時執行
  • 61. 判斷是否以某個字符串開頭
  • 62. 清除腳本內容
  • 63. 時間個性化輸出功能
  • 64. 全角轉換為半角函數
  • 65. 半角轉換為全角
  • 66. 金額大寫轉換函數
  • 67. 清除空格
  • 68. 隨機數時間戳
  • 69. 實現utf8解碼



1. 為元素添加 on 方法

Element.prototype.on = Element.prototype.addEventListener;NodeList.prototype.on = function (event, fn) {[]['forEach'].call(this, function (el) {el.on(event, fn);});return this; };

2. 為元素添加trigger方法

Element.prototype.trigger = function(type, data) {var event = document.createEvent("HTMLEvents");event.initEvent(type, true, true);event.data = data || {};event.eventName = type;event.target = this;this.dispatchEvent(event);return this; };NodeList.prototype.trigger = function(event) {[]["forEach"].call(this, function(el) {el["trigger"](event);});return this; };

3. 轉義 HTML 標簽

function HtmlEncode(text) {return text.replace(/&/g, "&").replace(/\"/g, '"').replace(/</g, "<").replace(/>/g, ">"); }

4. HTML 標簽轉義

// HTML 標簽轉義 // @param {Array.<DOMString>} templateData 字符串類型的tokens // @param {...} ..vals 表達式占位符的運算結果tokens // function SaferHTML(templateData) {var s = templateData[0];for (var i = 1; i < arguments.length; i++) {var arg = String(arguments[i]);// Escape special characters in the substitution.s += arg.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");// Don't escape special characters in the template.s += templateData[i];}return s; } // 調用 var html = SaferHTML`<p>這是關于字符串模板的介紹</p>`;

5. 跨瀏覽器綁定事件

function addEventSamp(obj, evt, fn) {if (!oTarget) {return;}if (obj.addEventListener) {obj.addEventListener(evt, fn, false);} else if (obj.attachEvent) {obj.attachEvent("on" + evt, fn);} else {oTarget["on" + sEvtType] = fn;} }

5. 加入收藏夾

function addFavorite(sURL, sTitle) {try {window.external.addFavorite(sURL, sTitle);} catch (e) {try {window.sidebar.addPanel(sTitle, sURL, "");} catch (e) {alert("加入收藏失敗,請使用Ctrl+D進行添加");}} }

7. 提取頁面代碼中所有網址

var aa = document.documentElement.outerHTML.match(/(url\(|src=|href=)[\"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/gi).join("\r\n").replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/gim, ""); alert(aa);

8. 動態加載腳本文件

function appendscript(src, text, reload, charset) {var id = hash(src + text);if (!reload && in_array(id, evalscripts)) return;if (reload && $(id)) {$(id).parentNode.removeChild($(id));}evalscripts.push(id);var scriptNode = document.createElement("script");scriptNode.type = "text/javascript";scriptNode.id = id;scriptNode.charset = charset? charset: BROWSER.firefox? document.characterSet: document.charset;try {if (src) {scriptNode.src = src;scriptNode.onloadDone = false;scriptNode.onload = function() {scriptNode.onloadDone = true;JSLOADED[src] = 1;};scriptNode.onreadystatechange = function() {if ((scriptNode.readyState == "loaded" ||scriptNode.readyState == "complete") &&!scriptNode.onloadDone) {scriptNode.onloadDone = true;JSLOADED[src] = 1;}};} else if (text) {scriptNode.text = text;}document.getElementsByTagName("head")[0].appendChild(scriptNode);} catch (e) {} }

9. 返回頂部的通用方法

function backTop(btnId) {var btn = document.getElementById(btnId);var d = document.documentElement;var b = document.body;window.onscroll = set;btn.style.display = "none";btn.onclick = function() {btn.style.display = "none";window.onscroll = null;this.timer = setInterval(function() {d.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);b.scrollTop -= Math.ceil((d.scrollTop + b.scrollTop) * 0.1);if (d.scrollTop + b.scrollTop == 0)clearInterval(btn.timer, (window.onscroll = set));}, 10);};function set() {btn.style.display = d.scrollTop + b.scrollTop > 100 ? "block" : "none";} } backTop("goTop");

10. 實現base64解碼

function base64_decode(data) {var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var o1,o2,o3,h1,h2,h3,h4,bits,i = 0,ac = 0,dec = "",tmp_arr = [];if (!data) {return data;}data += "";do {h1 = b64.indexOf(data.charAt(i++));h2 = b64.indexOf(data.charAt(i++));h3 = b64.indexOf(data.charAt(i++));h4 = b64.indexOf(data.charAt(i++));bits = (h1 << 18) | (h2 << 12) | (h3 << 6) | h4;o1 = (bits >> 16) & 0xff;o2 = (bits >> 8) & 0xff;o3 = bits & 0xff;if (h3 == 64) {tmp_arr[ac++] = String.fromCharCode(o1);} else if (h4 == 64) {tmp_arr[ac++] = String.fromCharCode(o1, o2);} else {tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);}} while (i < data.length);dec = tmp_arr.join("");dec = utf8_decode(dec);return dec; }

11. 確認是否是鍵盤有效輸入值

function checkKey(iKey) {if (iKey == 32 || iKey == 229) {return true;} /*空格和異常*/if (iKey > 47 && iKey < 58) {return true;} /*數字*/if (iKey > 64 && iKey < 91) {return true;} /*字母*/if (iKey > 95 && iKey < 108) {return true;} /*數字鍵盤1*/if (iKey > 108 && iKey < 112) {return true;} /*數字鍵盤2*/if (iKey > 185 && iKey < 193) {return true;} /*符號1*/if (iKey > 218 && iKey < 223) {return true;} /*符號2*/return false; }

12. 全角半角轉換

//iCase: 0全到半,1半到全,其他不轉化 function chgCase(sStr, iCase) {if (typeof sStr != "string" ||sStr.length <= 0 ||!(iCase === 0 || iCase == 1)) {return sStr;}var i,oRs = [],iCode;if (iCase) {/*半->全*/for (i = 0; i < sStr.length; i += 1) {iCode = sStr.charCodeAt(i);if (iCode == 32) {iCode = 12288;} else if (iCode < 127) {iCode += 65248;}oRs.push(String.fromCharCode(iCode));}} else {/*全->半*/for (i = 0; i < sStr.length; i += 1) {iCode = sStr.charCodeAt(i);if (iCode == 12288) {iCode = 32;} else if (iCode > 65280 && iCode < 65375) {iCode -= 65248;}oRs.push(String.fromCharCode(iCode));}}return oRs.join(""); }

13. 版本對比

function compareVersion(v1, v2) {v1 = v1.split(".");v2 = v2.split(".");var len = Math.max(v1.length, v2.length);while (v1.length < len) {v1.push("0");}while (v2.length < len) {v2.push("0");}for (var i = 0; i < len; i++) {var num1 = parseInt(v1[i]);var num2 = parseInt(v2[i]);if (num1 > num2) {return 1;} else if (num1 < num2) {return -1;}}return 0; }

14. 壓縮CSS樣式代碼

function compressCss(s) {//壓縮代碼s = s.replace(/\/\*(.|\n)*?\*\//g, ""); //刪除注釋s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");s = s.replace(/\,[\s\.\#\d]*\{/g, "{"); //容錯處理s = s.replace(/;\s*;/g, ";"); //清除連續分號s = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); //去掉首尾空白return s == null ? "" : s[1]; }

15. 獲取當前路徑

var currentPageUrl = ""; if (typeof this.href === "undefined") {currentPageUrl = document.location.toString().toLowerCase(); } else {currentPageUrl = this.href.toString().toLowerCase(); }

16. 字符串長度截取

function cutstr(str, len) {var temp,icount = 0,patrn = /[^\x00-\xff]/,strre = "";for (var i = 0; i < str.length; i++) {if (icount < len - 1) {temp = str.substr(i, 1);if (patrn.exec(temp) == null) {icount = icount + 1} else {icount = icount + 2}strre += temp} else {break;}}return strre + "..." }

17. 時間日期格式轉換

Date.prototype.format = function(formatStr) {var str = formatStr;var Week = ["日", "一", "二", "三", "四", "五", "六"];str = str.replace(/yyyy|YYYY/, this.getFullYear());str = str.replace(/yy|YY/,this.getYear() % 100 > 9? (this.getYear() % 100).toString(): "0" + (this.getYear() % 100));str = str.replace(/MM/,this.getMonth() + 1 > 9? (this.getMonth() + 1).toString(): "0" + (this.getMonth() + 1));str = str.replace(/M/g, this.getMonth() + 1);str = str.replace(/w|W/g, Week[this.getDay()]);str = str.replace(/dd|DD/,this.getDate() > 9 ? this.getDate().toString() : "0" + this.getDate());str = str.replace(/d|D/g, this.getDate());str = str.replace(/hh|HH/,this.getHours() > 9 ? this.getHours().toString() : "0" + this.getHours());str = str.replace(/h|H/g, this.getHours());str = str.replace(/mm/,this.getMinutes() > 9? this.getMinutes().toString(): "0" + this.getMinutes());str = str.replace(/m/g, this.getMinutes());str = str.replace(/ss|SS/,this.getSeconds() > 9? this.getSeconds().toString(): "0" + this.getSeconds());str = str.replace(/s|S/g, this.getSeconds());return str; };// 或 Date.prototype.format = function(format) {var o = {"M+": this.getMonth() + 1, //month"d+": this.getDate(), //day"h+": this.getHours(), //hour"m+": this.getMinutes(), //minute"s+": this.getSeconds(), //second"q+": Math.floor((this.getMonth() + 3) / 3), //quarterS: this.getMilliseconds() //millisecond};if (/(y+)/.test(format))format = format.replace(RegExp.$1,(this.getFullYear() + "").substr(4 - RegExp.$1.length));for (var k in o) {if (new RegExp("(" + k + ")").test(format))format = format.replace(RegExp.$1,RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));}return format; }; alert(new Date().format("yyyy-MM-dd hh:mm:ss"));

18. 跨瀏覽器刪除事件

function delEvt(obj, evt, fn) {if (!obj) {return;}if (obj.addEventListener) {obj.addEventListener(evt, fn, false);} else if (oTarget.attachEvent) {obj.attachEvent("on" + evt, fn);} else {obj["on" + evt] = fn;} }

19. 判斷是否以某個字符串結束

String.prototype.endWith = function(s) {var d = this.length - s.length;return d >= 0 && this.lastIndexOf(s) == d; };

20. 返回腳本內容

function evalscript(s) {if (s.indexOf("<script") == -1) return s;var p = /<script[^\>]*?>([^\x00]*?)<\/script>/gi;var arr = [];while ((arr = p.exec(s))) {var p1 = /<script[^\>]*?src=\"([^\>]*?)\"[^\>]*?(reload=\"1\")?(?:charset=\"([\w\-]+?)\")?><\/script>/i;var arr1 = [];arr1 = p1.exec(arr[0]);if (arr1) {appendscript(arr1[1], "", arr1[2], arr1[3]);} else {p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;arr1 = p1.exec(arr[0]);appendscript("", arr1[2], arr1[1].indexOf("reload=") != -1);}}return s; }

21. 格式化CSS樣式代碼

function formatCss(s) {//格式化代碼s = s.replace(/\s*([\{\}\:\;\,])\s*/g, "$1");s = s.replace(/;\s*;/g, ";"); //清除連續分號s = s.replace(/\,[\s\.\#\d]*{/g, "{");s = s.replace(/([^\s])\{([^\s])/g, "$1 {\n\t$2");s = s.replace(/([^\s])\}([^\n]*)/g, "$1\n}\n$2");s = s.replace(/([^\s]);([^\s\}])/g, "$1;\n\t$2");return s; }

22. 獲取Cookie值

function getCookie(name) {var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));if (arr != null) return unescape(arr[2]);return null; }

23. 獲得URL中GET參數值

// 用法:如果地址是 test.htm?t1=1&t2=2&t3=3, 那么能取得:GET["t1"], GET["t2"], GET["t3"] function getGet() {querystr = window.location.href.split("?");if (querystr[1]) {GETs = querystr[1].split("&");GET = [];for (i = 0; i < GETs.length; i++) {tmp_arr = GETs.split("=");key = tmp_arr[0];GET[key] = tmp_arr[1];}}return querystr[1]; }

24. 獲取移動設備初始化大小

function getInitZoom() {if (!this._initZoom) {var screenWidth = Math.min(screen.height, screen.width);if (this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()) {screenWidth = screenWidth / window.devicePixelRatio;}this._initZoom = screenWidth / document.body.offsetWidth;}return this._initZoom; }

25. 獲取頁面高度

function getPageHeight() {var g = document,a = g.body,f = g.documentElement,d = g.compatMode == "BackCompat" ? a : g.documentElement;return Math.max(f.scrollHeight, a.scrollHeight, d.clientHeight); }

26. 獲取頁面scrollLeft

function getPageScrollLeft() {var a = document;return a.documentElement.scrollLeft || a.body.scrollLeft; }

27. 獲取頁面scrollTop

function getPageScrollTop() {var a = document;return a.documentElement.scrollTop || a.body.scrollTop; }

28. 獲取頁面可視高度

function getPageViewHeight() {var d = document,a = d.compatMode == "BackCompat" ? d.body : d.documentElement;return a.clientHeight; }

29. 獲取頁面可視寬度

function getPageViewWidth() {var d = document,a = d.compatMode == "BackCompat" ? d.body : d.documentElement;return a.clientWidth; }

30. 獲取頁面寬度

function getPageWidth() {var g = document,a = g.body,f = g.documentElement,d = g.compatMode == "BackCompat" ? a : g.documentElement;return Math.max(f.scrollWidth, a.scrollWidth, d.clientWidth); }

31. 獲取移動設備屏幕寬度

function getScreenWidth() {var smallerSide = Math.min(screen.width, screen.height);var fixViewPortsExperiment =rendererModel.runningExperiments.FixViewport ||rendererModel.runningExperiments.fixviewport;var fixViewPortsExperimentRunning =fixViewPortsExperiment && fixViewPortsExperiment.toLowerCase() === "new";if (fixViewPortsExperiment) {if (this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()) {smallerSide = smallerSide / window.devicePixelRatio;}}return smallerSide; }

32. 獲取網頁被卷去的位置

function getScrollXY() {return document.body.scrollTop? {x: document.body.scrollLeft,y: document.body.scrollTop}: {x: document.documentElement.scrollLeft,y: document.documentElement.scrollTop}; }

33. 獲取URL上的參數

// 獲取URL中的某參數值,不區分大小寫 // 獲取URL中的某參數值,不區分大小寫, // 默認是取'hash'里的參數, // 如果傳其他參數支持取‘search’中的參數 // @param {String} name 參數名稱 export function getUrlParam(name, type = "hash") {let newName = name,reg = new RegExp("(^|&)" + newName + "=([^&]*)(&|$)", "i"),paramHash = window.location.hash.split("?")[1] || "",paramSearch = window.location.search.split("?")[1] || "",param;type === "hash" ? (param = paramHash) : (param = paramSearch);let result = param.match(reg);if (result != null) {return result[2].split("/")[0];}return null; }

34. 檢驗URL鏈接是否有效

function getUrlState(URL) {var xmlhttp = new ActiveXObject("microsoft.xmlhttp");xmlhttp.Open("GET", URL, false);try {xmlhttp.Send();} catch (e) {} finally {var result = xmlhttp.responseText;if (result) {if (xmlhttp.Status == 200) {return true;} else {return false;}} else {return false;}} }

35. 獲取窗體可見范圍的寬與高

function getViewSize() {var de = document.documentElement;var db = document.body;var viewW = de.clientWidth == 0 ? db.clientWidth : de.clientWidth;var viewH = de.clientHeight == 0 ? db.clientHeight : de.clientHeight;return Array(viewW, viewH); }

36. 獲取移動設備最大化大小

function getZoom() {var screenWidth =Math.abs(window.orientation) === 90? Math.max(screen.height, screen.width): Math.min(screen.height, screen.width);if (this.isAndroidMobileDevice() && !this.isNewChromeOnAndroid()) {screenWidth = screenWidth / window.devicePixelRatio;}var FixViewPortsExperiment =rendererModel.runningExperiments.FixViewport ||rendererModel.runningExperiments.fixviewport;var FixViewPortsExperimentRunning =FixViewPortsExperiment &&(FixViewPortsExperiment === "New" || FixViewPortsExperiment === "new");if (FixViewPortsExperimentRunning) {return screenWidth / window.innerWidth;} else {return screenWidth / document.body.offsetWidth;} }

37. 判斷是否安卓移動設備訪問

function isAndroidMobileDevice() {return /android/i.test(navigator.userAgent.toLowerCase()); }

38. 判斷是否蘋果移動設備訪問

function isAppleMobileDevice() {return /iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()); }

39. 判斷是否為數字類型

function isDigit(value) {var patrn = /^[0-9]*$/;if (patrn.exec(value) == null || value == "") {return false;} else {return true;} }

40. 是否是某類手機型號

// 用devicePixelRatio和分辨率判斷 const isIphonex = () => {// X XS, XS Max, XRconst xSeriesConfig = [{devicePixelRatio: 3,width: 375,height: 812},{devicePixelRatio: 3,width: 414,height: 896},{devicePixelRatio: 2,width: 414,height: 896}];// h5if (typeof window !== "undefined" && window) {const isIOS = /iphone/gi.test(window.navigator.userAgent);if (!isIOS) return false;const { devicePixelRatio, screen } = window;const { width, height } = screen;return xSeriesConfig.some(item =>item.devicePixelRatio === devicePixelRatio &&item.width === width &&item.height === height);}return false; };

41. 判斷是否移動設備

function isMobile() {if (typeof this._isMobile === "boolean") {return this._isMobile;}var screenWidth = this.getScreenWidth();var fixViewPortsExperiment =rendererModel.runningExperiments.FixViewport ||rendererModel.runningExperiments.fixviewport;var fixViewPortsExperimentRunning =fixViewPortsExperiment && fixViewPortsExperiment.toLowerCase() === "new";if (!fixViewPortsExperiment) {if (!this.isAppleMobileDevice()) {screenWidth = screenWidth / window.devicePixelRatio;}}var isMobileScreenSize = screenWidth < 600;var isMobileUserAgent = false;this._isMobile = isMobileScreenSize && this.isTouchScreen();return this._isMobile; }

42. 判斷是否手機號碼

function isMobileNumber(e) {var i ="134,135,136,137,138,139,150,151,152,157,158,159,187,188,147,182,183,184,178",n = "130,131,132,155,156,185,186,145,176",a = "133,153,180,181,189,177,173,170",o = e || "",r = o.substring(0, 3),d = o.substring(0, 4),s =!!/^1\d{10}$/.test(o) &&(n.indexOf(r) >= 0? "聯通": a.indexOf(r) >= 0? "電信": "1349" == d? "電信": i.indexOf(r) >= 0? "移動": "未知");return s; }

43. 判斷是否是移動設備訪問

function isMobileUserAgent() {return /iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test(window.navigator.userAgent.toLowerCase()); }

44. 判斷鼠標是否移出事件

function isMouseOut(e, handler) {if (e.type !== "mouseout") {return false;}var reltg = e.relatedTarget? e.relatedTarget: e.type === "mouseout"? e.toElement: e.fromElement;while (reltg && reltg !== handler) {reltg = reltg.parentNode;}return reltg !== handler; }

45. 判斷是否Touch屏幕

function isTouchScreen() {return ("ontouchstart" in window ||(window.DocumentTouch && document instanceof DocumentTouch)); }

46. 判斷是否為網址

function isURL(strUrl) {var regular = /^\b(((https?|ftp):\/\/)?[-a-z0-9]+(\.[-a-z0-9]+)*\.(?:com|edu|gov|int|mil|net|org|biz|info|name|museum|asia|coop|aero|[a-z][a-z]|((25[0-5])|(2[0-4]\d)|(1\d\d)|([1-9]\d)|\d))\b(\/[-a-z0-9_:\@&?=+,.!\/~%\$]*)?)$/i;if (regular.test(strUrl)) {return true;} else {return false;} }

47. 判斷是否打開視窗

function isViewportOpen() {return !!document.getElementById("wixMobileViewport"); }

48. 加載樣式文件

function loadStyle(url) {try {document.createStyleSheet(url);} catch (e) {var cssLink = document.createElement("link");cssLink.rel = "stylesheet";cssLink.type = "text/css";cssLink.href = url;var head = document.getElementsByTagName("head")[0];head.appendChild(cssLink);} }

49. 替換地址欄

function locationReplace(url) {if (history.replaceState) {history.replaceState(null, document.title, url);history.go(0);} else {location.replace(url);} }

50. 解決offsetX兼容性問題

// 針對火狐不支持offsetX/Y function getOffset(e) {var target = e.target, // 當前觸發的目標對象eventCoord,pageCoord,offsetCoord;// 計算當前觸發元素到文檔的距離pageCoord = getPageCoord(target);// 計算光標到文檔的距離eventCoord = {X: window.pageXOffset + e.clientX,Y: window.pageYOffset + e.clientY};// 相減獲取光標到第一個定位的父元素的坐標offsetCoord = {X: eventCoord.X - pageCoord.X,Y: eventCoord.Y - pageCoord.Y};return offsetCoord; }function getPageCoord(element) {var coord = { X: 0, Y: 0 };// 計算從當前觸發元素到根節點為止,// 各級 offsetParent 元素的 offsetLeft 或 offsetTop 值之和while (element) {coord.X += element.offsetLeft;coord.Y += element.offsetTop;element = element.offsetParent;}return coord; }

51. 打開一個窗體通用方法

function openWindow(url, windowName, width, height) {var x = parseInt(screen.width / 2.0) - width / 2.0;var y = parseInt(screen.height / 2.0) - height / 2.0;var isMSIE = navigator.appName == "Microsoft Internet Explorer";if (isMSIE) {var p = "resizable=1,location=no,scrollbars=no,width=";p = p + width;p = p + ",height=";p = p + height;p = p + ",left=";p = p + x;p = p + ",top=";p = p + y;retval = window.open(url, windowName, p);} else {var win = window.open(url,"ZyiisPopup","top=" +y +",left=" +x +",scrollbars=" +scrollbars +",dialog=yes,modal=yes,width=" +width +",height=" +height +",resizable=no");eval("try { win.resizeTo(width, height); } catch(e) { }");win.focus();} }

52. 將鍵值對拼接成URL帶參數

export default const fnParams2Url = obj=> {let aUrl = []let fnAdd = function(key, value) {return key + '=' + value}for (var k in obj) {aUrl.push(fnAdd(k, obj[k]))}return encodeURIComponent(aUrl.join('&'))}

53. 去掉url前綴

function removeUrlPrefix(a) {a = a.replace(/:/g, ":").replace(/./g, ".").replace(///g, "/");while (trim(a).toLowerCase().indexOf("http://") == 0) {a = trim(a.replace(/http:\/\//i, ""));}return a; }

54. 替換全部

String.prototype.replaceAll = function(s1, s2) {return this.replace(new RegExp(s1, "gm"), s2); };

55. resize的操作

(function() {var fn = function() {var w = document.documentElement? document.documentElement.clientWidth: document.body.clientWidth,r = 1255,b = Element.extend(document.body),classname = b.className;if (w < r) {//當窗體的寬度小于1255的時候執行相應的操作} else {//當窗體的寬度大于1255的時候執行相應的操作}};if (window.addEventListener) {window.addEventListener("resize", function() {fn();});} else if (window.attachEvent) {window.attachEvent("onresize", function() {fn();});}fn(); })();

56. 滾動到頂部

// 使用document.documentElement.scrollTop 或 document.body.scrollTop 獲取到頂部的距離,從頂部 // 滾動一小部分距離。使用window.requestAnimationFrame()來滾動。 // @example // scrollToTop(); function scrollToTop() {var c = document.documentElement.scrollTop || document.body.scrollTop;if (c > 0) {window.requestAnimationFrame(scrollToTop);window.scrollTo(0, c - c / 8);} }

57. 設置Cookie值

function setCookie(name, value, Hours) {var d = new Date();var offset = 8;var utc = d.getTime() + d.getTimezoneOffset() * 60000;var nd = utc + 3600000 * offset;var exp = new Date(nd);exp.setTime(exp.getTime() + Hours * 60 * 60 * 1000);document.cookie =name +"=" +escape(value) +";path=/;expires=" +exp.toGMTString() +";domain=360doc.com;"; }

58. 設為首頁

function setHomepage() {if (document.all) {document.body.style.behavior = "url(#default#homepage)";document.body.setHomePage("http://w3cboy.com");} else if (window.sidebar) {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", "http://w3cboy.com");} }

59. 按字母排序,對每行進行數組排序

function setSort() {var text = K1.value.split(/[\r\n]/).sort().join("\r\n"); //順序var test = K1.value.split(/[\r\n]/).sort().reverse().join("\r\n"); //反序K1.value = K1.value != text ? text : test; }

60. 延時執行

// 比如 sleep(1000) 意味著等待1000毫秒,還可從 Promise、Generator、Async/Await 等角度實現。 // Promise const sleep = time => {return new Promise(resolve => setTimeout(resolve, time)); };sleep(1000).then(() => {console.log(1); });// Generator function* sleepGenerator(time) {yield new Promise(function(resolve, reject) {setTimeout(resolve, time);}); }sleepGenerator(1000).next().value.then(() => {console.log(1);});//async function sleep(time) {return new Promise(resolve => setTimeout(resolve, time)); }async function output() {let out = await sleep(1000);console.log(1);return out; }output();function sleep(callback, time) {if (typeof callback === "function") {setTimeout(callback, time);} }function output() {console.log(1); }sleep(output, 1000);

61. 判斷是否以某個字符串開頭

String.prototype.startWith = function(s) {return this.indexOf(s) == 0; };

62. 清除腳本內容

function stripscript(s) {return s.replace(/<script.*?>.*?<\/script>/gi, ""); }

63. 時間個性化輸出功能

/* 1、< 60s, 顯示為“剛剛” 2、>= 1min && < 60 min, 顯示與當前時間差“XX分鐘前” 3、>= 60min && < 1day, 顯示與當前時間差“今天 XX:XX” 4、>= 1day && < 1year, 顯示日期“XX月XX日 XX:XX” 5、>= 1year, 顯示具體日期“XXXX年XX月XX日 XX:XX” */ function timeFormat(time) {var date = new Date(time),curDate = new Date(),year = date.getFullYear(),month = date.getMonth() + 10,day = date.getDate(),hour = date.getHours(),minute = date.getMinutes(),curYear = curDate.getFullYear(),curHour = curDate.getHours(),timeStr;if (year < curYear) {timeStr = year + "年" + month + "月" + day + "日 " + hour + ":" + minute;} else {var pastTime = curDate - date,pastH = pastTime / 3600000;if (pastH > curHour) {timeStr = month + "月" + day + "日 " + hour + ":" + minute;} else if (pastH >= 1) {timeStr = "今天 " + hour + ":" + minute + "分";} else {var pastM = curDate.getMinutes() - minute;if (pastM > 1) {timeStr = pastM + "分鐘前";} else {timeStr = "剛剛";}}}return timeStr; }

64. 全角轉換為半角函數

function toCDB(str) {var result = "";for (var i = 0; i < str.length; i++) {code = str.charCodeAt(i);if (code >= 65281 && code <= 65374) {result += String.fromCharCode(str.charCodeAt(i) - 65248);} else if (code == 12288) {result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32);} else {result += str.charAt(i);}}return result; }

65. 半角轉換為全角

function toDBC(str) {var result = "";for (var i = 0; i < str.length; i++) {code = str.charCodeAt(i);if (code >= 33 && code <= 126) {result += String.fromCharCode(str.charCodeAt(i) + 65248);} else if (code == 32) {result += String.fromCharCode(str.charCodeAt(i) + 12288 - 32);} else {result += str.charAt(i);}}return result; }

66. 金額大寫轉換函數

function transform(tranvalue) {try {var i = 1;var dw2 = new Array("", "萬", "億"); //大單位var dw1 = new Array("拾", "佰", "仟"); //小單位var dw = new Array("零","壹","貳","叁","肆","伍","陸","柒","捌","玖"); //整數部分用//以下是小寫轉換成大寫顯示在合計大寫的文本框中//分離整數與小數var source = splits(tranvalue);var num = source[0];var dig = source[1];//轉換整數部分var k1 = 0; //計小單位var k2 = 0; //計大單位var sum = 0;var str = "";var len = source[0].length; //整數的長度for (i = 1; i <= len; i++) {var n = source[0].charAt(len - i); //取得某個位數上的數字var bn = 0;if (len - i - 1 >= 0) {bn = source[0].charAt(len - i - 1); //取得某個位數前一位上的數字}sum = sum + Number(n);if (sum != 0) {str = dw[Number(n)].concat(str); //取得該數字對應的大寫數字,并插入到str字符串的前面if (n == "0") sum = 0;}if (len - i - 1 >= 0) {//在數字范圍內if (k1 != 3) {//加小單位if (bn != 0) {str = dw1[k1].concat(str);}k1++;} else {//不加小單位,加大單位k1 = 0;var temp = str.charAt(0);if (temp == "萬" || temp == "億")//若大單位前沒有數字則舍去大單位str = str.substr(1, str.length - 1);str = dw2[k2].concat(str);sum = 0;}}if (k1 == 3) {//小單位到千則大單位進一k2++;}}//轉換小數部分var strdig = "";if (dig != "") {var n = dig.charAt(0);if (n != 0) {strdig += dw[Number(n)] + "角"; //加數字}var n = dig.charAt(1);if (n != 0) {strdig += dw[Number(n)] + "分"; //加數字}}str += "元" + strdig;} catch (e) {return "0元";}return str; } //拆分整數與小數 function splits(tranvalue) {var value = new Array("", "");temp = tranvalue.split(".");for (var i = 0; i < temp.length; i++) {value = temp;}return value; }

67. 清除空格

String.prototype.trim = function() {var reExtraSpace = /^\s*(.*?)\s+$/;return this.replace(reExtraSpace, "$1"); };// 清除左空格 function ltrim(s) {return s.replace(/^(\s*| *)/, ""); }// 清除右空格 function rtrim(s) {return s.replace(/(\s*| *)$/, ""); }

68. 隨機數時間戳

function uniqueId() {var a = Math.random,b = parseInt;return (Number(new Date()).toString() + b(10 * a()) + b(10 * a()) + b(10 * a())); }

69. 實現utf8解碼

function utf8_decode(str_data) {var tmp_arr = [],i = 0,ac = 0,c1 = 0,c2 = 0,c3 = 0;str_data += "";while (i < str_data.length) {c1 = str_data.charCodeAt(i);if (c1 < 128) {tmp_arr[ac++] = String.fromCharCode(c1);i++;} else if (c1 > 191 && c1 < 224) {c2 = str_data.charCodeAt(i + 1);tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));i += 2;} else {c2 = str_data.charCodeAt(i + 1);c3 = str_data.charCodeAt(i + 2);tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));i += 3;}}return tmp_arr.join(""); }

總結

以上是生活随笔為你收集整理的JavaScript 常用工具函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

天天操天天舔天天爽 | 九九热99视频 | 久久国色夜色精品国产 | 国模一区二区三区四区 | 综合久久久久久久 | 色偷偷网站视频 | 午夜av大片| 国产亚洲精品久久久网站好莱 | 中文字幕第一页在线 | 色狠狠婷婷 | 国内外成人在线 | 国产伦理久久精品久久久久_ | 国产精品 9999 | 在线免费观看麻豆 | 成人av高清 | 免费的成人av | 天天操综 | 91中文字幕永久在线 | 久久免费福利视频 | 中文字幕频道 | 国产精品麻豆99久久久久久 | 国产成人av电影在线观看 | 亚洲免费av电影 | 国产精品99久久久久久久久 | 中文字幕精品www乱入免费视频 | 最近最新mv字幕免费观看 | 午夜精品久久久久久久99无限制 | 91福利视频免费 | 成人羞羞免费 | 手机av在线网站 | www.色爱| 欧美另类xxx| 精品国产伦一区二区三区 | 日日干天天 | 99精品久久精品一区二区 | 久久99精品久久久久久清纯直播 | 国产99久久精品一区二区永久免费 | 亚洲国产日韩欧美在线 | 欧美日韩在线视频免费 | 黄色国产大片 | 国内精品久久久久 | 国产日韩高清在线 | 国产一区二区三精品久久久无广告 | 国产综合精品一区二区三区 | 亚洲综合色婷婷 | 狠狠狠狠狠干 | 91麻豆精品国产91久久久无限制版 | 国产美女视频免费观看的网站 | 九九亚洲精品 | 99草在线视频 | 国产喷水在线 | 日韩高清精品免费观看 | www.国产精品 | 亚洲高清视频一区二区三区 | 成人h视频在线 | 精品国产伦一区二区三区免费 | 国产精品乱码久久久久久1区2区 | 国产一区二区三区视频在线 | av7777777| 国产精品女人久久久 | 国产精品一区二区av影院萌芽 | 黄a网站| 亚洲一区精品二人人爽久久 | 日韩欧美电影在线观看 | 午夜色影院 | 狠狠干天天射 | 精品国模一区二区三区 | 久草亚洲视频 | 日日操天天操狠狠操 | 久久99亚洲精品久久 | 国产福利久久 | 日韩系列在线 | 日韩v欧美v日本v亚洲v国产v | 久艹视频在线免费观看 | 日韩三级免费 | 亚洲视频资源在线 | 九九九毛片 | 精品色999 | 久久激情久久 | 天天综合网~永久入口 | 成人av网站在线观看 | 就要干b | 成人永久免费 | 国产精品一码二码三码在线 | 在线你懂的视频 | 99久久精品久久久久久动态片 | 亚洲免费在线观看视频 | 天天搞夜夜骑 | 欧美日韩高清不卡 | 黄色av电影在线 | 美女视频又黄又免费 | 91成人精品在线 | 久草在线高清 | 亚洲高清视频在线观看免费 | 黄色一区三区 | 六月丁香六月婷婷 | 一级淫片在线观看 | 色综合天天狠狠 | 国产午夜精品久久 | 国产午夜精品久久久久久久久久 | 中文字幕av日韩 | 久久久久一区二区三区 | 成年人国产在线观看 | 亚洲自拍自偷 | 蜜臀av夜夜澡人人爽人人桃色 | 色综合久久网 | 五月婷婷丁香在线观看 | 日日干天天插 | 黄色片网站av | 国产色影院| 天天干天天射天天插 | 色橹橹欧美在线观看视频高清 | 国产在线p | 午夜影院日本 | 激情婷婷久久 | 区一区二区三区中文字幕 | 丁香资源影视免费观看 | a√天堂中文在线 | 国产区精品视频 | 久久最新 | 欧美成人性网 | 久久国产精品影视 | 日韩试看 | 一级α片| 日韩大片在线 | 国产精品视频内 | 91网页版在线观看 | 国产精品高清在线观看 | 色综合 久久精品 | 国产手机视频 | 在线亚洲欧美视频 | 色综合久久中文综合久久牛 | 天天射天天舔天天干 | 91av在线精品| h视频在线看 | 91| 日韩精品欧美一区 | 人人玩人人爽 | 97看片| 成人av影视 | 在线观看视频在线观看 | 夜夜躁日日躁狠狠躁 | 欧美日韩国语 | 黄色1级毛片| 久久9精品| 欧美性色综合网 | 四虎影视成人精品国库在线观看 | 免费a视频| 91经典在线 | 久久精品99国产国产精 | www.色婷婷 | 日韩美女久久 | 在线观看成年人 | 最近久乱中文字幕 | 亚洲免费国产视频 | 西西444www大胆无视频 | 一区二区三区久久 | 国产一区播放 | 高清av在线免费观看 | 精品日韩中文字幕 | 亚洲国产免费看 | 97精品国产| 视频二区在线 | 国产小视频你懂的 | 日韩伦理一区二区三区av在线 | 中文字幕免费高清av | 午夜精品久久久久久久99热影院 | 国产中出在线观看 | 色爽网站 | 免费网站v| 丰满少妇一级 | 97超碰人人澡人人爱 | 免费在线看成人av | 久久精品www人人爽人人 | 91日韩在线 | 欧美日韩不卡在线观看 | 干干干操操操 | 色老板在线| 国产亚洲精品久久19p | 国产自产高清不卡 | 久久天堂精品视频 | 久久久久国产精品一区 | 91丨九色丨国产在线观看 | 国产精品成人一区二区 | 99视| 少妇bbb| 国产精品伦一区二区三区视频 | 亚洲视屏在线播放 | 国产精品视频永久免费播放 | 久久尤物电影视频在线观看 | 色婷婷狠狠五月综合天色拍 | 久久免费播放视频 | 欧美最猛性xxxx | 亚洲另类视频在线 | 久久香蕉国产 | 国产精品久久久久久久久久久免费看 | 欧美大码xxxx | 激情久久伊人 | 九草在线视频 | 91九色国产在线 | 亚洲国产成人久久综合 | 91香蕉亚洲精品 | 国产精品国产自产拍高清av | 97在线观看免费 | 一区二区三区在线影院 | 丝袜+亚洲+另类+欧美+变态 | 久久久久久美女 | 日韩亚洲在线观看 | 黄视频色网站 | 日韩最新中文字幕 | 免费看黄电影 | 久久国产精彩视频 | 色综合久久综合网 | 伊人久久一区 | 国产成人精品亚洲日本在线观看 | 亚洲欧美日韩国产精品一区午夜 | 五月天伊人| 亚洲五月| 少妇bbb搡bbbb搡bbbb | 日韩理论视频 | 91免费看黄色| 欧美日韩国产免费视频 | 天天射天天爽 | 人人澡人| 欧美日韩视频在线观看免费 | 国产码电影 | 夜夜夜夜操 | 日韩字幕 | 亚洲国产一区二区精品专区 | 国产精品video爽爽爽爽 | 成人免费在线播放 | 五月婷婷操 | 久久久久久久久免费 | 很污的网站 | 四虎免费在线观看 | 久久婷婷综合激情 | 在线观看亚洲 | 91 在线视频播放 | 亚洲理论在线观看电影 | 一区中文字幕电影 | 国产精品私拍 | 日本69hd| 国产精品毛片一区二区在线 | 国产伦理久久精品久久久久_ | 九九色综合 | 日韩在线视频网站 | 久久精品直播 | 亚洲视频一区二区三区在线观看 | 日韩网站中文字幕 | 视频在线日韩 | 成人h视频在线 | 中文字幕av在线不卡 | 黄色免费视频在线观看 | 亚洲天堂网视频 | 国产在线高清 | 国产成人在线免费观看 | 99久久精品视频免费 | 香蕉在线视频播放网站 | 亚洲综合五月 | 欧美精品一二三 | 国产 字幕 制服 中文 在线 | 外国av网 | 国产在线观看你懂的 | www.亚洲视频 | 91黄色在线观看 | 精品一区二区在线观看 | 精品自拍sae8—视频 | 欧美性另类 | 在线激情小视频 | 免费三级骚 | 91成人在线看 | 91激情在线视频 | 日韩91在线 | 中国一 片免费观看 | 一区二区视频电影在线观看 | 在线日本v二区不卡 | 白丝av在线 | 99在线视频免费观看 | 日韩特黄一级欧美毛片特黄 | 亚洲精品中文字幕在线观看 | 九九免费观看视频 | 最新中文字幕 | 欧美特一级| www麻豆视频 | 激情欧美一区二区三区免费看 | 高清有码中文字幕 | 天天干天天操天天操 | 亚洲激情六月 | 国产精品久久电影网 | 在线精品视频免费播放 | 人成在线免费视频 | 麻豆影视在线免费观看 | 久久99久国产精品黄毛片入口 | 欧美一级高清片 | 精品久久久久久一区二区里番 | 亚洲欧美日韩精品久久久 | 成人中文字幕在线观看 | 在线色资源 | 福利二区视频 | 国产精品毛片一区二区 | 日韩av一区二区在线影视 | 91九色视频在线 | 久久人人97超碰com | 在线观看亚洲国产 | 青青河边草观看完整版高清 | 国产精品成人国产乱 | 亚洲精品资源在线 | 亚洲毛片视频 | 99视频精品全国免费 | 天天亚洲综合 | 在线免费观看成人 | 婷婷精品在线视频 | 久久成人午夜视频 | 91超国产 | 国产成人精品一区二区在线 | www.97视频| 午夜丁香视频在线观看 | 中文字幕在线看视频 | 国产精品成人a免费观看 | 精品国产一区二区三区不卡 | 精品免费国产一区二区三区四区 | 久久一区二区三区日韩 | 国产成人精品亚洲日本在线观看 | 亚洲精选国产 | 亚洲国产免费看 | 午夜精品久久一牛影视 | 亚洲国产中文在线 | 丁香六月婷婷激情 | 日本中文在线播放 | 欧美超碰在线 | av高清影院 | 久久久久久久久久电影 | 国产伦理一区二区 | 91麻豆精品国产91 | 在线色吧 | 99精品免费| 色婷婷九月 | 亚洲免费在线观看视频 | 精品久久久999 | 日韩最新在线 | 久久久久国产a免费观看rela | 国产又粗又猛又黄又爽的视频 | 欧洲精品码一区二区三区免费看 | 在线观看中文字幕 | 国产视频中文字幕在线观看 | 天天碰天天操视频 | 黄色综合 | 国产第页 | 久久久久女人精品毛片九一 | 免费高清无人区完整版 | 97视频在线观看播放 | 天天操综合网站 | 麻豆小视频在线观看 | av福利在线导航 | 欧美日韩天堂 | 国产99免费视频 | 亚洲aⅴ在线观看 | 国产成人精品亚洲 | 亚洲精品tv久久久久久久久久 | www.狠狠插.com| 中文字幕日韩在线播放 | 欧美日韩免费观看一区二区三区 | 亚洲男男gⅴgay双龙 | av在线电影免费观看 | 一区中文字幕 | 国产精品福利在线 | 国产精品二区在线观看 | www.com操| 久久综合色播五月 | 看片网站黄色 | 国产精品一区二区久久久 | 国产一级在线播放 | 亚洲成人av电影在线 | 精品毛片一区二区免费看 | 人人爽人人av | 天天操夜夜叫 | 人人玩人人添人人澡97 | 欧美孕妇视频 | 黄网站免费看 | 国产精品九九久久99视频 | 久久久精品网站 | 999成人 | 精品伦理一区二区三区 | 国产一区二区三区视频在线 | 国内三级在线观看 | 精品国产aⅴ一区二区三区 在线直播av | av久久在线 | 99视频精品视频高清免费 | av在线a| 久久精品99国产精品亚洲最刺激 | 黄色在线小网站 | www.天天色| 欧美久草网 | 黄色av免费看 | 91九色成人 | 波多野结衣在线观看视频 | 国产精品视频在线观看 | 国产精品免费观看网站 | 麻豆视频免费在线 | 精品一区二区三区四区在线 | 免费在线观看一区二区三区 | 精品国模一区二区 | av资源免费看 | 欧美日韩高清一区二区 | 天堂av在线网址 | 天天操狠狠操夜夜操 | 天天操天天舔天天爽 | 久久午夜羞羞影院 | 在线免费观看一区二区三区 | 色综合久久88色综合天天人守婷 | 久久久久免费精品视频 | 高清不卡一区二区三区 | 四虎在线视频免费观看 | 日日夜夜天天操 | 色视频网站在线观看一=区 a视频免费在线观看 | 久久国产香蕉视频 | 欧美日韩不卡一区二区 | 91精品国产乱码在线观看 | 一区二区三区高清在线 | 国产三级国产精品国产专区50 | 蜜臀久久99精品久久久酒店新书 | 亚洲视屏 | 91亚洲国产| 免费在线观看成人av | 黄色精品网站 | 摸bbb搡bbb搡bbbb | 欧美成人高清 | 日韩精品一区二区三区在线视频 | 九九热精品国产 | 精品国产一区在线观看 | 九九久久国产 | 91在线播放国产 | 国产日韩一区在线 | 免费观看完整版无人区 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 国产成人久久精品一区二区三区 | 日韩性色 | 天天操天天爽天天干 | 亚洲精品理论片 | a视频在线 | 日韩理论电影网 | 欧美日韩国产二区 | 日韩欧美一区二区在线 | 91电影福利 | 成人精品福利 | 精品免费视频 | 精品在线视频观看 | 国产中出在线观看 | 狠狠狠色丁香婷婷综合激情 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 免费成人短视频 | 国产在线高清视频 | 国产高清在线看 | 久久一久久| 在线观看91精品国产网站 | 天堂av免费 | 国产精品第二十页 | 成人av高清 | 日韩在线看片 | 久久中文欧美 | 国产精品久久久毛片 | 久久九九精品久久 | 婷婷色六月天 | 天天色天天射天天操 | 亚洲欧洲日韩在线观看 | 国产亚洲婷婷免费 | 精品国产自在精品国产精野外直播 | 免费又黄又爽的视频 | 国产精品6 | 久久久久久国产精品久久 | 少妇超碰在线 | www.亚洲精品视频 | 日韩精品免费在线观看 | 国产精品久久久久久久久久久久 | 免费视频区 | 国产一区二区三区免费在线 | 国产不卡在线看 | 国产字幕在线观看 | 99在线视频网站 | 欧美黄污视频 | 亚洲视频网站在线观看 | 在线中文字母电影观看 | 成片人卡1卡2卡3手机免费看 | 久久亚洲欧美日韩精品专区 | 安徽妇搡bbbb搡bbbb | 亚洲国产日韩一区 | 久久久久久久av麻豆果冻 | 国产精品videossex国产高清 | 91免费观看视频在线 | 欧美日韩后 | 尤物一区二区三区 | 久久精品一区二区三区中文字幕 | 日韩av一区二区在线 | 国产亚洲情侣一区二区无 | 亚洲女欲精品久久久久久久18 | 超碰av在线 | 亚洲精品欧美成人 | 黄色一级大片在线免费看国产一 | 久久9999久久免费精品国产 | 玖玖玖国产精品 | 午夜精品一区二区三区免费视频 | 国产精品 国内视频 | 在线观看a视频 | 国产麻豆视频免费观看 | 亚洲精品国精品久久99热一 | 亚洲精品美女视频 | 欧美极度另类 | 午夜精品久久久久久久久久久久久久 | 特级西西www44高清大胆图片 | 97人人看 | 久久成人高清 | av天天澡天天爽天天av | 日本久久91 | 九九在线精品视频 | 亚洲精品成人av在线 | 91桃色国产在线播放 | 亚洲一级片免费观看 | 国产糖心vlog在线观看 | 天天操天天干天天干 | 精品亚洲免费视频 | 中文字幕在线视频一区二区 | 91久久精品一区二区三区 | 成人a大片 | 国产专区欧美专区 | 狠狠网亚洲精品 | 亚州精品天堂中文字幕 | 午夜精品99久久免费 | 色视频网站免费观看 | 米奇四色影视 | 国际精品久久久 | 亚洲精品欧洲精品 | 韩国av一区二区 | 99精品国产在热久久 | 九九三级毛片 | 国产精品视频地址 | 日韩电影精品一区 | 久久久久久毛片精品免费不卡 | 在线视频手机国产 | 国产91探花 | 狠狠色狠狠色综合日日小说 | av 一区二区三区 | 日韩在线观看一区二区三区 | 久久这里只有精品9 | 激情视频综合网 | 最新午夜 | 成年人免费观看在线视频 | 色视频在线免费观看 | 国产成人精品一区二三区 | 日韩精品一区二区在线视频 | 日日干日日操 | 日韩大片免费观看 | 久草在线视频看看 | 精品久久综合 | 国产精品久久久久久久久久久杏吧 | 亚洲精选99 | 国产精品大片免费观看 | 欧美色图另类 | 国产亚洲精品久久久久久电影 | 五月婷婷av在线 | 激情综合网天天干 | 成人97视频一区二区 | 日韩啪啪小视频 | 久久久免费毛片 | 久久亚洲精品国产亚洲老地址 | 久久久午夜视频 | 91一区啪爱嗯打偷拍欧美 | 国产中文字幕在线观看 | 麻豆国产电影 | 在线免费黄色av | 午夜少妇一区二区三区 | 久久手机精品视频 | 日本精品一区二区 | 精品国产乱码久久久久久天美 | 蜜臀av免费一区二区三区 | 91精品视频导航 | 久久69精品久久久久久久电影好 | 天天摸天天舔 | 天天碰天天操 | 成人影视免费看 | 日韩欧美在线视频一区二区三区 | 在线免费高清 | 97超碰超碰久久福利超碰 | 国产一级性生活 | 香蕉成人在线视频 | 91精品系列 | 91精品在线免费视频 | 激情电影影院 | 黄色软件大全网站 | 久久久精华网 | 香蕉久久久久 | 中文字幕资源站 | 欧美成人日韩 | 欧美一二三区在线播放 | 日本韩国中文字幕 | 夜夜操天天干, | 成人午夜免费剧场 | 久久精品国产一区二区电影 | 国产精品综合久久久 | 在线观看www. | 国产视频在线观看一区二区 | 日韩av电影免费在线观看 | 国产在线播放一区 | av大全在线播放 | 国产精品爽爽爽 | 91久久精品日日躁夜夜躁国产 | 三上悠亚在线免费 | 日韩三级成人 | 97在线资源| 亚洲免费资源 | 四虎影视成人永久免费观看视频 | 综合激情网... | av免费网站观看 | 一区二区三区四区影院 | 久久香蕉影视 | 色午夜| 国产一线二线三线性视频 | 成人久久18免费网站麻豆 | 国产日韩精品在线观看 | www.夜色.com | 中文字幕一区二区三区四区久久 | 欧美日韩国产精品一区二区亚洲 | 免费av观看网站 | 9在线观看免费高清完整版在线观看明 | 国产成人精品免费在线观看 | 日日草天天草 | 精品一区电影 | 亚洲午夜久久久久久久久久久 | 亚洲成色777777在线观看影院 | 国内丰满少妇猛烈精品播 | 天天操天天草 | 久久视频在线视频 | 欧美日韩国产高清视频 | 久章操 | 黄色毛片电影 | 蜜桃久久久| 在线免费视频你懂的 | 九九爱免费视频在线观看 | 国产高清av | 免费看污网站 | 日韩av看片 | 91爱爱免费观看 | 亚洲精品高清一区二区三区四区 | 天天综合成人网 | 九九热在线视频 | 国产精品久久久久久久久软件 | 亚洲精选视频免费看 | 日韩精品一二三 | 欧美精品国产综合久久 | 免费看搞黄视频网站 | 久久久久久久久久久久久久免费看 | 国产精品毛片一区视频播 | 成人黄色短片 | 黄色国产高清 | 国产第一二区 | 久久久久久久久免费视频 | 高清在线观看av | 视频在线亚洲 | 午夜影院一级片 | 麻豆视频国产在线观看 | 韩国在线一区二区 | 444av| 草久久久久久久 | 国产成人av网 | 婷婷色网视频在线播放 | 中文字幕视频一区二区 | 人人干人人超 | 国产黄色在线看 | 奇米网8888| 精品美女久久久久久免费 | 免费网址你懂的 | 国产 在线 高清 精品 | 国产精品自产拍在线观看中文 | 99热手机在线观看 | 色资源在线观看 | 在线观看电影av | av黄色大片 | 国产美女精品久久久 | 精品国产一区二区三区久久久 | 久久夜色精品国产欧美乱 | 中文不卡视频在线 | 国产成人综合在线观看 | 有没有在线观看av | 最新日韩视频在线观看 | www久久国产 | 亚洲三级在线免费观看 | 天天射网| 亚洲婷婷综合色高清在线 | 精品国内自产拍在线观看视频 | 中文字幕永久在线 | 亚洲精品乱码久久久久久蜜桃91 | 欧美一级日韩免费不卡 | 天天做天天爱天天综合网 | 国产成人久久精品77777 | 久久精品国产成人 | 亚洲成aⅴ人在线观看 | 国产欧美最新羞羞视频在线观看 | 麻豆免费精品视频 | 91成版人在线观看入口 | 亚洲国产午夜 | 欧美一级电影在线观看 | 深夜男人影院 | 免费看的黄网站 | 久久免费的精品国产v∧ | 免费看国产一级片 | 99精品国产免费久久 | 国产精品123 | 亚洲网站在线 | 伊人伊成久久人综合网站 | 欧美乱码精品一区二区 | 丰满少妇在线观看资源站 | 91人人插| 久久精品一区二区三 | www.99久久.com| 日日精品 | 色综合小说 | 91丨九色丨蝌蚪丰满 | 欧美另类交人妖 | 91麻豆精品国产91久久久更新时间 | 久久69精品 | 中文字幕日本在线 | 国产婷婷在线观看 | 亚洲欧美一区二区三区孕妇写真 | 精品久久久久久久久久岛国gif | 国产乱码精品一区二区蜜臀 | 成人黄大片 | 久久精品播放 | 国产成年免费视频 | 99热在线看 | 1000部18岁以下禁看视频 | 欧美另类交在线观看 | 人人草在线观看 | 看黄色91 | 亚洲精品一区二区网址 | 亚洲精品午夜久久久 | 天天操伊人 | 国产视频手机在线 | 三级黄在线 | 亚洲天堂香蕉 | 人人玩人人添人人澡超碰 | 91av美女| 免费人成网ww44kk44 | 久久久久久久av | 少妇精品久久久一区二区免费 | 欧美最猛性xxx | 亚洲成人av在线电影 | a天堂在线看 | 国产高清免费在线播放 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久精品高清 | 国产一级免费在线观看 | 国产视频在线免费 | 国产久草在线 | 日韩欧美在线观看 | 伊人看片 | 日韩激情网 | 天天插天天 | 亚洲特级片 | 国产亚洲亚洲 | 亚洲香蕉视频 | 日韩精品欧美视频 | 国色天香永久免费 | 天天干,夜夜操 | 91九色性视频 | 麻豆综合网 | 成人av一区二区在线观看 | 亚洲精品视频免费在线观看 | 99精品在线| 久草综合在线 | 国产成人一区二区三区久久精品 | 久久久精品日本 | 在线视频1卡二卡三卡 | 最新中文字幕在线资源 | 波多野结衣视频网址 | 93久久精品日日躁夜夜躁欧美 | 99久久这里有精品 | 精品专区 | 国产午夜av | 国产亚洲精品免费 | 色射爱| 亚洲激情电影在线 | av 一区 二区 久久 | 成年人视频在线免费播放 | 精品乱码一区二区三四区 | 麻豆影视在线免费观看 | 九九影视理伦片 | 99r在线| 久久婷婷色综合 | 麻花豆传媒一二三产区 | 日韩激情一二三区 | 日韩av一区在线观看 | 人人爽人人澡 | 精品国产乱码一区二区三区在线 | 99久久精品国 | www日韩在线| 国产精品电影一区二区 | 日韩有色 | 久久这里只有精品9 | 国产成人精品不卡 | 懂色av一区二区在线播放 | 91成人网在线观看 | 日本久久久精品视频 | 免费久久99精品国产 | 国产精品99久久久久久人免费 | 亚洲精品日韩在线观看 | 成人网444ppp | 亚洲黄色av一区 | 一区二区三区国产欧美 | 亚洲香蕉视频 | 亚洲手机天堂 | 在线看片一区 | 天天爱天天舔 | 久久久噜噜噜久久久 | 婷婷播播网 | av成年人电影 | 久久99国产一区二区三区 | 色婷婷av国产精品 | 国产精品视频在线看 | 99视频在线免费观看 | 久久精品亚洲一区二区三区观看模式 | 亚洲日本va午夜在线影院 | 亚洲精品乱码久久久久久蜜桃动漫 | 成人97人人超碰人人99 | 亚洲动漫在线观看 | 超碰97人人在线 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国内精品免费 | 2022国产精品视频 | 日韩欧美国产免费播放 | 亚洲精品视频在线看 | 成人国产电影在线观看 | 国产黄在线看 | 少妇bbb | 国产精品久久久久久电影 | 九九在线播放 | 在线播放你懂 | 日本精品久久久久影院 | 欧美永久视频 | www.人人干| www久久99 | 91成人精品一区在线播放69 | av在线免费网站 | 欧美日韩在线免费观看视频 | 最近字幕在线观看第一季 | 久久精品三 | 日韩av中文字幕在线免费观看 | 国产精品理论视频 | 友田真希x88av | 国产永久免费 | 日日麻批40分钟视频免费观看 | aa级黄色大片 | 久久成人欧美 | 国产精品久久久久久麻豆一区 | 亚洲国内精品在线 | 日本女人逼 | 人人爽人人澡人人添人人人人 | 波多野结衣在线播放一区 | 99精品在线观看视频 | 亚洲va欧美va | www色com | 美女黄网站视频免费 | 91麻豆精品国产91久久久使用方法 | 午夜成人免费影院 | 在线视频欧美精品 | 欧美少妇18p| 欧美久久久久久久久中文字幕 | 亚洲综合色站 | 国产在线观看a | 国产粉嫩在线观看 | 免费亚洲黄色 | 久久久久久久久久久网站 | 男女日麻批 | 五月婷婷丁香在线观看 | 婷婷激情综合五月天 | 亚洲午夜电影网 | 五月婷婷丁香六月 | 久久精品国产一区二区电影 | www久久99 | 在线天堂日本 | av超碰在线 | 亚洲综合情| 99色人| v片在线看 | 亚洲在线视频播放 | 国产黄色电影 | 亚洲精品黄色 | 夜色成人网| 国产精品video爽爽爽爽 | 大荫蒂欧美视频另类xxxx | 国产精品自产拍在线观看蜜 | 欧美日韩有码 | 免费日韩av片 | 亚洲日本韩国一区二区 | 欧美日一级片 | 色资源中文字幕 | 欧美另类高潮 | 中文字幕免费播放 | 国产综合精品一区二区三区 | 久久国产精品视频 | 丁香花在线观看视频在线 | 97色在线| 久久综合精品一区 | 亚洲精品国偷自产在线99热 | 国产黄网在线 | 尤物一区二区三区 | 欧美日韩精品二区第二页 | 91成人在线视频观看 | 久久免费视频网 | 国产精品美女视频网站 | 丁香婷婷社区 | 国产高清在线一区 | 精品一区在线看 | 欧美综合在线观看 | 国产精品久久久久久久av电影 | 91.dizhi永久地址最新 | 久久精品日产第一区二区三区乱码 | 日韩天天干 | 精品久久美女 | 香蕉久草 | 国产精品久久久久久爽爽爽 | 日本大尺码专区mv | 国产成人精品久久亚洲高清不卡 | 亚洲一区二区视频在线播放 | 五月天婷亚洲天综合网精品偷 | 超碰在线最新网址 | 91超国产 | 夜添久久精品亚洲国产精品 | 国产人成在线观看 | 久久99精品国产99久久6尤 | 狠狠色丁香久久综合网 | 青草视频网 | 韩国精品一区二区三区六区色诱 | 91av久久| 日韩精品免费一区 | a级国产片 | 精品中文字幕在线 | 日韩专区在线 | 九九免费在线观看 | 免费av影视| 成人欧美一区二区三区在线观看 | www视频免费在线观看 | 91精品久久久久久综合五月天 | 网址你懂的在线观看 | 日韩av一区二区三区在线观看 | 国产99久久99热这里精品5 | 日韩av中文在线 | 视频一区二区三区视频 | 欧美资源在线观看 | 亚洲人天堂 | av高清在线 | 人人爽人人插 | 国产69精品久久99不卡的观看体验 | 国产色视频一区二区三区qq号 | 国产偷在线 | 久草9视频 | 亚洲精品国产精品99久久 | 美女久久一区 | 天天躁天天躁天天躁婷 | 色综合天天射 | 中文字幕在线观 | 激情五月播播久久久精品 | 日韩一级理论片 | 五月天国产精品 | 色婷婷久久久综合中文字幕 | 中文字幕一区二区三区精华液 | 久草男人天堂 | 午夜av不卡| 开心丁香婷婷深爱五月 | 国产一级大片免费看 | 天天操操 | 成年人视频在线观看免费 | 成人黄大片| 91亚洲精品乱码久久久久久蜜桃 | 亚洲aaa级| 久久精品国产亚洲 | 国产高清在线看 | 91精品国产综合久久婷婷香蕉 | 中文字幕中文字幕在线一区 | 欧美 日韩 成人 | 婷婷色中文网 | 97精品国产手机 | 婷婷草| 国产精品久久一区二区三区不卡 | 玖玖在线播放 | 伊人永久| 黄色免费网站大全 | 久久久影视 | 国产在线视频在线观看 | 国产高清在线a视频大全 | 国产成人a v电影 | 日韩欧美有码在线 | 中文字幕在线观看一区 | 久久精品中文字幕 | 精品999久久久 | 久久99在线视频 | 亚洲婷婷伊人 | 黄色网在线播放 | 99国产情侣在线播放 | 三级黄色片在线观看 |