UNPKG

@buession/prototype

Version:

A native object extension framework for Javascript.

128 lines (127 loc) 4.06 kB
"use strict"; /** * Window 对象扩展 */ var isMobile = ["Android", "iPhone", "iPod", "Windows Phone", "Mobile", "Coolpad", "mmp", "SmartPhone", "midp", "wap", "xoom", "Symbian", "J2ME", "Blackberry", "Wince"].some(value => navigator.userAgent.exists(value)); var isChrome = /\(KHTML, like Gecko\) Chrome\//.test(navigator.userAgent); var isFirefox = navigator.userAgent.exists("Firefox"); var isMozilla = navigator.userAgent.exists("Mozilla"); var isEdge = navigator.userAgent.exists("Edge"); var isMSIE = navigator.userAgent.exists("MSIE") && navigator.userAgent.exists("compatible"); var isOpera = navigator.userAgent.exists("Opera"); var isSafari = navigator.userAgent.exists("Safari"); var isNetscape = /Netscape([\d]*)\/([^\s]+)/i.test(navigator.userAgent); Object.defineProperty(window, "browser", { value: { userAgent: navigator.userAgent, name: navigator.appName, version: navigator.appVersion, cookieEnabled: navigator.cookieEnabled, language: navigator.language, languages: navigator.languages, isMobile: isMobile, isChrome: isChrome, isFirefox: isFirefox, isMozilla: isMozilla, isEdge: isEdge, isMSIE: isMSIE, isOpera: isOpera, isSafari: isSafari, isNetscape: isNetscape }, configurable: true, writable: false }); /** * 将字符串复制到剪贴板 * * @param str 字符串 */ Window.prototype.copy = function (str) { try { if (Object.isObject(this.clipboardData) === true) { this.clipboardData.setData("text", str); } else { var fakeElement = document.createElement("textarea"); fakeElement.style.border = "none"; fakeElement.style.margin = "0"; fakeElement.style.padding = "0"; fakeElement.style.position = "absolute"; fakeElement.style.top = "-9999px"; fakeElement.style.left = "-9999px"; fakeElement.value = str; fakeElement.setAttribute("readonly", ""); document.body.appendChild(fakeElement); fakeElement.setSelectionRange(0, str.length); fakeElement.select(); document.execCommand("copy"); fakeElement.remove(); } } catch (e) { console.error(e); } }; /** * 延时执行 * * @param func 延时执行方法 * @param wait 延时时长(单位:毫秒) * @param args 方法参数 * * @return 方法执行结果 */ Window.prototype.delay = function (func, wait) { var delayFunc = function delayFunc(func, wait) { for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { args[_key2 - 2] = arguments[_key2]; } if (typeof func !== "function") { throw new TypeError("Expected a function"); } return setTimeout(function () { func.apply(undefined, args); }, wait); }; for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { args[_key - 2] = arguments[_key]; } return delayFunc(func, wait || 0, args); }; /** * 获取所有的请求参数及值 * * @return 所有的请求参数及值 */ Location.prototype.getParameters = function () { var queryString = this.search; var parameters = {}; if (queryString.indexOf("?") !== -1) { queryString = queryString.substring(1); var parts = queryString.split("&"); for (var i = 0; i < parts.length; i++) { var temp = parts[i].split("="); var val = temp.length == 2 ? encodeURIComponent(temp[1]) : ""; if (Object.isUndefined(parameters[temp[0]])) { parameters[temp[0]] = val; } else { if (Object.isArray(parameters[temp[0]]) === false) { var oldVal = parameters[temp[0]]; delete parameters[temp[0]]; parameters[temp[0]] = [oldVal]; } parameters[temp[0]].push(val); } } } return parameters; }; /** * 获取指定请求参数的值 * * @param name 参数名 * @return 指定请求参数的值 */ Location.prototype.getParameter = function (name) { var parameters = this.getParameters(); return parameters[name]; };