首页
留言反馈
网站导航
推荐
毒鸡汤
Search
1
非插件为typecho 文章生成微海报分享
18,821 阅读
2
主题移动端,样式下添加二级分类
15,378 阅读
3
主题 添加author page
14,693 阅读
4
主题添加移动端下边栏
12,711 阅读
5
EMlog添加评论者邮箱等级
9,059 阅读
typecho
dynamic
SuiYu
Emlog
xiuno
登录
/
注册
Search
标签搜索
代码
xiuno
php
css
typecho
评论
模板
say
js
修改教程
标签
珍惜
努力
recommend
善良
样式
调用
微笑
颜色
插件
Vincent
累计撰写
151
篇文章
累计收到
184
条评论
首页
栏目
typecho
dynamic
SuiYu
Emlog
xiuno
页面
留言反馈
网站导航
推荐
毒鸡汤
搜索到
23
篇与
的结果
2023-01-07
每天60秒读世界图片API接口源码
使用教程:将源码上传至服务器/主机进行解压 然后 你的域名/index.php 进行访问 每天60秒读懂全世界源码.zip
2023年01月07日
3,957 阅读
0 评论
5 点赞
2022-12-22
如何用Sql语句在数据表中添加字段
数据表中添加一个字段的标准SQL语句写法为:alter table 表名 add (字段 字段类型) [ default '输入默认值'] [null/not null]举例:ALTER TABLE employee ADD spbh varchar(20) NOT NULL Default 0意思就是在表employee 中加入 字段spbh,该字段的类型是varchar,大小20,并且不允许为空,初始默认值是0。扩展资料:其他常用sql语句:1、修改数据表中某项字段属性,为其添加备注。语句格式:comment on column 库名.表名.字段名 is '输入的备注'示例: 我要在ers_data库中 test表 document_type字段添加备注,则sql语句为:comment on column ers_data.test.document_type is '文件类型'2、修改数据表中某字段类型。语句格式:alter table 表名 modiy (字段 字段类型 [default '输入默认值' ] [null/not null] ,字段 字段类型 [default '输入默认值' ] [null/not null] ) 修改多个字段用逗号隔开。示例:想要修改一个teacher教师表中字段办公室classroom的类型为char(20),且默认值“办公室”,则对应sql为:ALTER TABLE teacher ALTER COLUMN classroom VARCHAR(20) NOT NULL default "办公室"3、删除数据表中的某字段。语句格式:alter table 表名 drop (字段)示例:删除表student中的字段age,可以用如下sql:alter table student drop age
2022年12月22日
1,993 阅读
1 评论
6 点赞
2021-08-09
一言api,毒鸡汤单页源码
环境要求PHP 5.7+安装指南下载源码修改一些自己的信息 上传到普通站点目录就可以访问了一言模式复制下方代码到你的网站想显示的位置,修改api地址,就可以在网站调用自己建的一言了。<script type="text/javascript" src="https://你的api域名/api/?format=js&charset=utf-8"></script> <div id="hitokoto"><script>hitokoto()</script></div>注意事项一言api在api\文件夹里。 一言调用的词句在api\hitokoto.txt文件里,可自行删增。 演示站调用了自定义字体,下载包已经包含且已经调用,如果服务器带宽低,请禁用index.htm文件第15行预览下载点击预览
2021年08月09日
1,590 阅读
0 评论
10 点赞
2021-06-30
css 流光按钮
先看效果图:实现简单炫酷,直接复制查看效果CSS:<style> .btn { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 230px; height: 90px; line-height: 90px; text-align: center; color: #fff; font-size: 25px; text-transform: uppercase; cursor: pointer; background: linear-gradient(90deg, #03a9f4, #f441a5, #ffeb3b, #03a9f4); background-size: 400%; border-radius: 60px; } .btn:hover { animation: animate 8s linear infinite; } @keyframes animate { 0% { background-position: 0%; } 100% { background-position: 400%; } } .btn::before { content: ''; position: absolute; top: -5px; left: -5px; right: -5px; bottom: -5px; z-index: -1; background: linear-gradient(90deg, #03a9f4, #f441a5, #ffeb3b, #03a9f4); background-size: 400%; border-radius: 40px; opacity: 0; transition: 0.5s; } .btn:hover::before { filter: blur(20px); opacity: 1; animation: animate 8s linear infinite; } </style> <body> <b href="#" class="btn">button</b> </body>
2021年06月30日
1,029 阅读
0 评论
3 点赞
2021-05-19
伪3D文本
HTML<div class="loading">Loading</div>CSS@import url("https://fonts.googleapis.com/css?family=Baloo+Bhaijaan&display=swap"); @function float-text-3d($shadow-color: #bbb, $depth: 10, $floating: false) { $shadows: (); // When dropped, it will shrink like a spring. When floating, it grows into its shape. @for $i from 1 to $depth { @if ($floating == false and $i > $depth / 2) { $shadow-color: transparent; } $shadows: append($shadows, 0 ($i * 1px) $shadow-color, comma); } // When dropped, the shadow reveals. When floating, the shadow fades. @if ($floating == false) { $shadows: append($shadows, 0 10px 10px rgba(0, 0, 0, 0.4), comma); } @else { $shadows: append($shadows, 0 50px 25px rgba(0, 0, 0, 0.2), comma); } @return $shadows; } body { display: flex; height: 100vh; justify-content: center; align-items: center; text-align: center; background: #2980b9; } .loading { display: flex; color: white; font-size: 5em; font-family: "Baloo Bhaijaan", cursive; text-transform: uppercase; span { text-shadow: float-text-3d($floating: false); transform: translateY(20px); animation: bounce 0.3s ease infinite alternate; } } @keyframes bounce { to { text-shadow: float-text-3d($floating: true); transform: translateY(-20px); } }JSlet loading = document.querySelector(".loading"); let letters = loading.textContent.split(""); loading.textContent = ""; letters.forEach((letter, i) => { let span = document.createElement("span"); span.textContent = letter; span.style.animationDelay = `${i / 10}s`; loading.append(span); });
2021年05月19日
850 阅读
0 评论
4 点赞
2021-04-18
收藏,日常必备的JS工具函数大全
为元素添加on方法Element.prototype.on = Element.prototype.addEventListener; NodeList.prototype.on = function (event, fn) {、 []['forEach'].call(this, function (el) { el.on(event, fn); }); return this; };为元素添加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; };转义html标签function HtmlEncode(text) { return text .replace(/&/g, "&") .replace(/\"/g, '"') .replace(/</g, "<") .replace(/>/g, ">"); }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, "&") .replace(/</g, "<") .replace(/>/g, ">"); // Don't escape special characters in the template. s += templateData[i]; } return s; } // 调用 var html = SaferHTML`<p>这是关于字符串模板的介绍</p>`;跨浏览器绑定事件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; } }加入收藏夹function addFavorite(sURL, sTitle) { try { window.external.addFavorite(sURL, sTitle); } catch (e) { try { window.sidebar.addPanel(sTitle, sURL, ""); } catch (e) { alert("加入收藏失败,请使用Ctrl+D进行添加"); } } }提取页面代码中所有网址var aa = document.documentElement.outerHTML .match( /(url\(|src=|href=)[\"\']*([^\"\'\(\)\<\>\[\] ]+)[\"\'\)]*|(http:\/\/[\w\-\.]+[^\"\'\(\)\<\>\[\] ]+)/gi ) .join("\r\n") .replace(/^(src=|href=|url\()[\"\']*|[\"\'\>\) ]*$/gim, ""); alert(aa);动态加载脚本文件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) {} }返回顶部的通用方法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");实现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; }确认是否是键盘有效输入值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; }全角半角转换//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(""); }版本对比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; }压缩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]; }获取当前路径var currentPageUrl = ""; if (typeof this.href === "undefined") { currentPageUrl = document.location.toString().toLowerCase(); } else { currentPageUrl = this.href.toString().toLowerCase(); }字符串长度截取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 + "..." }时间日期格式转换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), //quarter S: 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"));跨浏览器删除事件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; } }判断是否以某个字符串结束String.prototype.endWith = function(s) { var d = this.length - s.length; return d >= 0 && this.lastIndexOf(s) == d; };返回脚本内容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; }格式化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; }获取cookie值function getCookie(name) { var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr != null) return unescape(arr[2]); return null; }获得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]; }获取移动设备初始化大小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; }获取页面高度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); }获取页面scrollLeftfunction getPageScrollLeft() { var a = document; return a.documentElement.scrollLeft || a.body.scrollLeft; }获取页面scrollTopfunction getPageScrollTop() { var a = document; return a.documentElement.scrollTop || a.body.scrollTop; }获取页面可视高度function getPageViewHeight() { var d = document, a = d.compatMode == "BackCompat" ? d.body : d.documentElement; return a.clientHeight; }获取页面可视宽度function getPageViewWidth() { var d = document, a = d.compatMode == "BackCompat" ? d.body : d.documentElement; return a.clientWidth; }获取页面宽度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); }获取移动设备屏幕宽度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; }获取网页被卷去的位置function getScrollXY() { return document.body.scrollTop ? { x: document.body.scrollLeft, y: document.body.scrollTop } : { x: document.documentElement.scrollLeft, y: document.documentElement.scrollTop }; }获取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; }检验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; } } }获取窗体可见范围的宽与高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); }获取移动设备最大化大小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; } }判断是否安卓移动设备访问function isAndroidMobileDevice() { return /android/i.test(navigator.userAgent.toLowerCase()); }判断是否苹果移动设备访问function isAppleMobileDevice() { return /iphone|ipod|ipad|Macintosh/i.test(navigator.userAgent.toLowerCase()); }判断是否为数字类型function isDigit(value) { var patrn = /^[0-9]*$/; if (patrn.exec(value) == null || value == "") { return false; } else { return true; } }是否是某类手机型号// 用devicePixelRatio和分辨率判断 const isIphonex = () => { // X XS, XS Max, XR const xSeriesConfig = [ { devicePixelRatio: 3, width: 375, height: 812 }, { devicePixelRatio: 3, width: 414, height: 896 }, { devicePixelRatio: 2, width: 414, height: 896 } ]; // h5 if (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; };判断是否移动设备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; }判断是否手机号码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; }判断是否是移动设备访问function isMobileUserAgent() { return /iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i.test( window.navigator.userAgent.toLowerCase() ); }判断鼠标是否移出事件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; }判断是否Touch屏幕function isTouchScreen() { return ( "ontouchstart" in window || (window.DocumentTouch && document instanceof DocumentTouch) ); }判断是否为网址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; } }判断是否打开视窗function isViewportOpen() { return !!document.getElementById("wixMobileViewport"); }加载样式文件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); } }替换地址栏function locationReplace(url) { if (history.replaceState) { history.replaceState(null, document.title, url); history.go(0); } else { location.replace(url); } }解决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; }打开一个窗体通用方法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(); } }将键值对拼接成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('&')) }去掉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; }替换全部String.prototype.replaceAll = function(s1, s2) { return this.replace(new RegExp(s1, "gm"), s2); };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(); })();滚动到顶部// 使用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); } }设置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;"; }设为首页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"); } }按字母排序,对每行进行数组排序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; }延时执行// 比如 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);判断是否以某个字符串开头String.prototype.startWith = function(s) { return this.indexOf(s) == 0; };清除脚本内容function stripscript(s) { return s.replace(/<script.*?>.*?<\/script>/gi, ""); }时间个性化输出功能/* 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; }全角转换为半角函数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; }半角转换为全角函数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; }金额大写转换函数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; }清除空格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*| *)$/, ""); }随机数时间戳function uniqueId() { var a = Math.random, b = parseInt; return ( Number(new Date()).toString() + b(10 * a()) + b(10 * a()) + b(10 * a()) ); }##实现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(""); }
2021年04月18日
1,318 阅读
0 评论
6 点赞
2020-11-03
人性漏洞
1老鼠掉进了半满的米缸,意外让它喜不自禁。确定没有危险后,它便开始了在米缸里吃了睡、睡了吃的生活。很快,米缸就要见底了,可它终究还是摆脱不了大米的诱惑,继续留在缸里。最后,米吃完了,它才发现,跳出去只是梦想,一切都无能为力了生活看似平坦,实则藏有玄机,所以我们要居安思危,未雨绸缪,以备不时之需。2第一天,小白兔去钓鱼,一无所获。第二天,它又去钓鱼,还是如此。第三天它刚到,一条大鱼从河里跳出来,大叫:你要是再敢用胡萝卜当鱼饵,我就扁死你。你给的都是你自己“想”给的,而不是对方想要的,学会换位思考,明白别人之所需,许多事情可能就迎刃而解了。3在一次宴会上,马克吐温与一位女士对坐,出于礼貌,说了一声:您真漂亮!那位女士却不领情,高傲地说:可惜我无法同样来赞美您!马克吐温委婉平和地说:那没关系,你可以像我一样,说一句谎话就行了。那位女士羞愧地低下了头你扔下的石头,绊倒的往往是你自己。挖下的坑,往往是自己跳。4一个朋友是医生,一次癌症手术,打开后发现切不了,只好再缝上。去和病人解释情况,那位病人农村来的,听不懂术语,坚持认为手术过了,病就好了。只好让其出院,一年后回访,真的好了,癌细胞消失了。心病难医,乐观的心态是最好的手术。5那年,他坐在咖啡店等朋友,一位女孩走过来问:你是通过王阿姨介绍来相亲的吗?他抬头打量一下她,正是自己喜欢的类型,心想何不将错就错,于是忙答应道:对,请坐。结婚当天,他坦白,当时自己不是去相亲的。老婆笑,说:我也不是去相亲的,只是找个借口和你搭讪……机遇来了,只要方式合理,就快去抓住它。6女生公开投票选班花,相貌平平的小梅发表演说:如果我当选,再过几年,在座的姐妹可以向自己先生骄傲的说,我上大学时,比班花还漂亮!结果,她全票当选!说服别人支持你,不一定要证明你的优秀,而是要证明别人的优秀,人都是这样,禁不住夸奖的。7在高速行驶的火车上,一位老人不小心把刚买的新鞋从窗口掉了一只,周围的人倍感惋惜,不料老人立即把第二只鞋也从窗口扔了下去。这个举动让人大吃一惊。老人解释说:这一只鞋无论多么昂贵,对我而言已经没有用了,如果有谁能捡到一双鞋子,说不定他还能穿呢!注定无法挽回的痛苦,不如早点放弃。8两只老虎,一只在笼子里,一只在荒野中。两只老虎都认为自己所处的环境不好,互相羡慕对方。它们决定交换身份,开始时,十分快乐。但不久,两只老虎都死了:一只饥饿而死,一只忧郁而死有时,人们对自己的幸福熟视无睹,总是把眼睛看向别人的幸福。其实,你所拥有的正是别人所羡慕的。
2020年11月03日
2,330 阅读
3 评论
3 点赞
2020-10-27
有种关系,此生难忘
茫茫人海,与你擦肩而过的人很多,和你相识的人也不计其数。有血缘关系的亲人就是屈指可数那么几个,除了亲人之外,还有另外一种人,这种人尽管没有血缘关系,但也像亲人一样关心你、爱护你、帮助你,这种人就是朋友。朋友就是你高兴时想见的人,烦恼时想找的人。朋友是可以一起打着伞在雨中漫步,是可以一起在海边沙滩上打个滚儿,是可以一起沉溺于某种音乐遐思,是可以一起徘徊于书海畅游,朋友是有悲伤陪你一起掉眼泪,有欢乐和你一起傻傻的笑……朋友不是先来的人或者认识最久的人,而是那个来了以后再也没有走的人。最值得珍惜的,不是得不到,也不是已失去,而是此刻你所拥有的。经历了太多,不败的只有朋友,用什么来诠释这种特别的东西,我想,是永恒。人生短短几十载,眨眼间便过,抓住的,抓不住的,溜走的,留下的,一些些,都是感动,都是满足,虽曾不满意这些,但经历了太多,也便欣然,留住身边的,便是最好的。打不走的才是朋友,吵不散的才是真爱。将心比心,站在朋友的立场上为他想想,设身处地的去帮助值得去帮助的朋友,毕竟来世间一遭,你我有缘才会相识,下辈子不会再相见了。朋友之间最重要的东西:一颗真心!好朋友就像星星。你不一定每天都能看见他们,但你知道,他们会一直在那里。真心的对待每个对我好的人,滴水之恩,涌泉相报;涌泉之恩,以心相报。朋友不一定常常联系,但也不会忘记,每次偶尔念起,还是感觉那么温暖亲切;朋友是把关怀放在心里,把关注藏在眼底;朋友是相伴走过一段又一段的人生。朋友不一定形影不离,但一定心心相惜。不一定锦上添花,但一定雪中送炭。不一定天天见面,但一定放在心里。一辈子真的不长,该珍惜的彼此珍惜吧!
2020年10月27日
2,422 阅读
3 评论
5 点赞
2020-09-15
愿漫漫长路,总有人陪伴左右
昨晚下班很晚,可地铁依旧很挤。等了几班车,才挤上了车尾。好不容易找到一个还算宽松的位置站着,正想松口气时,看到一个满脸泪水的姑娘。她没有表情,没有声音,但眼泪一直在流。很想送她一张纸巾,但强按住了快要伸出去的手。这种境况下,她应该不太希望被关注,也不太想被打扰吧。好想此时能有一个她特别亲密的朋友在身边,帮她擦干眼泪,给她一个紧紧地拥抱。可生命中有太多孤独,需要一个人面对。有太多眼泪,需要独自品味。曾经你也经历过这样的时刻吧。悲从心生,怎么也压不住心底的委屈。顾不得身处的环境,也无心顾及周围人的看法。只能用仅剩的理智,控制着自己不要哭出声。多希望在这些时刻,能有一人陪伴在你身边。知你心事,懂你委屈,帮你擦干脸上的泪水。轻声告诉你“想哭就哭,你还有我。”生命是一段旅程,可是很多时候,旅途中的风景没有我们想象中那么美好。总会在某些猝不及防的时刻,用这样或那样的事情,打的人措手不及。而我们只能照单全收,独自消化,停一段时间后,才能收拾好心情后,重新出发。在这段旅程中,你一边努力,一边迷茫。陪在你身边的人,总是只陪了一段,就去了不同的方向。让我感谢命运我的生命总有人匆匆离去太多今天想要去逃避被推进被驱离你是否也一直在寻找?寻找一个人解开你的迷茫,指引你人生的方向,陪你走到旅程尽头,看遍沿途的风景。寻找一个人在大雨中为你撑伞,在黑暗中默默抱紧你,陪你彻夜聊天,陪你开心陪你流泪。虽然常听人说,人生而孤独。但还是希望你能找到这么一个人。往后余生,不论遇到什么,都不用一个人孤身面对。漫漫人生路,能有他来作陪。
2020年09月15日
2,563 阅读
3 评论
1 点赞
1
2
3