摘要:返回指定范圍的隨機數之間的公式會阻擋預設要發生的事件會阻擋發生冒泡事件而則是前面兩者的事情他都會做他會做他會做停止的執行并且立即回來防止被嵌套兩種圖片加載的方式第一個中級交流群成都獵巫第二個上海準備為圖片預加載使用的插件使用的圖片
1. PC - js
返回指定范圍的隨機數(m-n之間)的公式
Math.random()*(n-m)+m
return false
return false
// event.preventDefault()會阻擋預設要發生的事件. // event.stopPropagation()會阻擋發生冒泡事件. // 而return false則是前面兩者的事情他都會做: // 他會做event.preventDefault(); // 他會做event.stopPropagation(); // 停止callback function的執行并且立即return回來
防止被Iframe嵌套
if(top != self){ location.href = ”about:blank”; }
兩種圖片lazy加載的方式
第一個By JS中級交流群 成都-獵巫 第二個By 上海-zenki
// @description 準備為圖片預加載使用的插件 // 使用的圖片容器css類名為lazy-load-wrap // 圖片真實地址為data-lazy-src // 當lazy-load-wrap容器進入視口,則開始替換容器內所有需要延遲加載的圖片路徑,并更改容器的加載狀態 //第一種方法 $.fn.compassLazyLoad=function(){ var _HEIGHT=window.innerHeight, _lazyLoadWrap=$(".lazy-load-wrap"); var methods={ setOffsetTop:function(){ $.each(_lazyLoadWrap,function(i,n){ $(n).attr({ "top":n.offsetTop-_HEIGHT, "status":"wait" }); }) }, isShow:function(){ var _scrollTop=$(window).scrollTop; //利用image容器判斷是否進入視口,而非image本身 $.each(_lazyLoadWrap,function(){ var _that=$(this); if (_that.attr("status")==="done") { return; }; if (_that.attr("top")<=_scrollTop) { _that.find("img[data-lazy-src]").each(function(i,n){ n.src=$(n).data("lazy-src"); }); _that.attr("status","done"); }; }) }, scroll:function(){ $(window).on("scroll",function(){ methods.isShow(); }); }, init:function(){ methods.setOffsetTop(); methods.isShow(); methods.scroll(); } }; methods.init(); } //第二種方法 var exist=(function($){ var timer=null, temp=[].slice.call($(".container")); ret={}; for(var i=0,len=temp.length-1;i<=len;i++){ ret[i]=temp[i]; } var isExist=function(winTop,winEnd){ for(var i in ret){ console.log(ret); var item=ret[i], eleTop=item.offsetTop, eleEnd=eleTop+item.offsetHeight; if((eleTop>winTop&&eleTop<=winEnd)||(eleEnd>winTop&&eleEnd<=winEnd)){ $(item).css("background","none"); new Tab($(item).attr("id"),data).init; delete ret[i]; } } } return { timer:timer; isExist:isExist; }; })($); //第三種方法 Zepto(function ($) { var swiper = new Swiper(".swiper-container", { pagination: ".swiper-pagination", paginationClickable: true, autoplay: 3000, loop: true, autoplayDisableOnInteraction: false }); (function lazyLoad() { var imgs = $(".lazyLoad"); var src = ""; $.each(imgs, function (index, item) { src = $(item).attr("data-src"); $(item).attr("src", src); }); })(); }); $(function () { var lazyLoadTimerId = null; /// 智能加載事件 $(window).bind("scroll", function () { clearTimeout(lazyLoadTimerId); lazyLoadTimerId = setTimeout(function () { // 延遲加載所有圖片 var isHttp = (location.protocol === "http:"); $("#ym_images img").each(function () { var self = $(this); if (self.filter(":above-the-fold").length > 0) { var originUrl = self.attr("data-original"); self.attr("src", originUrl); } }); }, 500); }); });
某年某月的1號為星期幾
var weekday = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"]; weekday[new Date(2015, 9, 1).getDay()]; //2015年10月1號2. Mobile - js
js 判斷IOS, 安卓
var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1; //android終端或者uc瀏覽器 var isiOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端 alert("是否是Android:"+isAndroid); alert("是否是iOS:"+isiOS);3. 微信 weixin
UserAgent 判斷微信客戶端
// Mozilla/5.0 (iPhone; CPU iPhone OS 8_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) Mobile/12F70 MicroMessenger/6.1.5 NetType/WIFI function isWechat() { var ua = navigator.userAgent.toLowerCase(); return /micromessenger/i.test(ua) || /windows phone/i.test(ua); }
JS接口安全域名不填寫,分享onMenuShareAppMessage直接會取默認值。
// 分享onMenuShareAppMessage直接會取默認值
關閉當前頁面
WeixinJSBridge.call("closeWindow");
支付接口方法調用必須在addevent里邊調用
document.addEventListener("WeixinJSBridgeReady", function onBridgeReady(){ that.initOrder(); }, false);
支付接口方法調用必須在
WeixinJSBridge.invoke("getBrandWCPayRequest", d, function(res){ if(res.err_msg == "get_brand_wcpay_request:ok"){ // alert("支付成功"); // union.release(d.orderId); resetUrl(); paySuccess("home", d.orderId); } else { cancelOrder(d.orderId); // alert(res.err_msg); } loading.hide(); });
瀑布流無限加載實例
// be dependent on jquery & jquery.infinitescroll.min.js // insert this "" to your page.html (function($){ $(function(){ var $container = $(".list-wrap-gd"); function layOutCallBack() { $container.imagesLoaded(function(){ $container.masonry({ itemSelector: ".item-bar", gutter: 10 }); }); $container.imagesLoaded().progress( function() { $container.masonry("layout"); }); } layOutCallBack(); $container.infinitescroll({ navSelector : "#more", nextSelector : "#more a", itemSelector : ".item-bar", pixelsFromNavToBottom: 300, loading:{ img: "/images/masonry_loading.gif", msgText: " ", finishedMsg: "已經到最后一頁", finished: function(){ $("#more").remove(); $("#infscr-loading").hide(); } }, errorCallback:function(){ $(window).unbind(".infscr"); }, pathParse: function (path, nextPage) { var query = ""; var keyword=$("#search_keyword").val(); var cat_id=$("#cat_id").val(); var brand_id=$("#brand_id").val(); var country_id = $("#country_id").val(); query = query + "&namekeyword="+keyword; query = query +"&cat_id="+cat_id query = query + "&brand_id=" + brand_id; query = query + "&country_id=" + country_id; path = [path,query]; return path; } }, function(newElements) { var $newElems = $( newElements ).css({ opacity: 0 }); $newElems.imagesLoaded(function(){ $newElems.animate({ opacity: 1 }); $container.masonry( "appended", $newElems, true ); layOutCallBack(); }); }); }); })(jQuery);
iOS,Safari瀏覽器,input等表單focus后fixed元素錯位問題
if( /iPhone|iPod|iPad/i.test(navigator.userAgent) ) { $(document).on("focus", "input, textarea", function() { $("header").css("position", "absolute"); $("footer").css("position", "absolute"); }); $(document).on("blur", "input, textarea", function() { $("header").css("position", "fixed"); $("footer").css("position", "fixed"); }); }
得到地理位置
function getLocation(callback){ if(navigator.geolocation){ navigator.geolocation.getCurrentPosition( function(p){ callback(p.coords.latitude, p.coords.longitude); }, function(e){ var msg = e.code + " " + e.message; } ); } }
rem計算適配
(function(doc, win){ var docEl = doc.documentElement, resizeEvt = "orientationchange" in window ? "orientationchange" : "resize", recalc = function(){ var clientWidth = docEl.clientWidth; if(!clientWidth) return; docEl.style.fontSize = 20 * (clientWidth / 320) + "px"; }; if(!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); doc.addEventListener("DOMContentLoaded", recalc, false); })(document, window);
另外一種rem方案
var dpr, rem, scale; var docEl = document.documentElement; var fontEl = document.createElement("style"); var metaEl = document.querySelector("meta[name="viewport"]"); dpr = window.devicePixelRatio || 1; rem = docEl.clientWidth * 2 / 10; scale = 1 / dpr; // 設置viewport,進行縮放,達到高清效果 metaEl.setAttribute("content", "width=" + dpr * docEl.clientWidth + ",initial-scale=" + scale + ",maximum-scale=" + scale + ", minimum-scale=" + scale + ",user-scalable=no"); // 設置data-dpr屬性,留作的css hack之用 docEl.setAttribute("data-dpr", dpr); // 動態寫入樣式 docEl.firstElementChild.appendChild(fontEl); fontEl.innerHTML = "html{font-size:" + rem + "px!important;}"; // 給js調用的,某一dpr下rem和px之間的轉換函數 window.rem2px = function(v) { v = parseFloat(v); return v * rem; }; window.px2rem = function(v) { v = parseFloat(v); return v / rem; }; window.dpr = dpr; window.rem = rem;
獲取js所在路徑
function getJsDir (src) { var script = null; if (src) { script = [].filter.call(document.scripts, function (v) { return v.src.indexOf(src) !== -1; })[0]; } else { script = document.scripts[document.scripts.length - 1]; } return script ? script.src.substr(0, script.src.lastIndexOf("/")) : script; }
從全局捕獲錯誤
window.onerror = function (errMsg, scriptURI, lineNumber, columnNumber, errorObj) { setTimeout(function () { var rst = { "錯誤信息:": errMsg, "出錯文件:": scriptURI, "出錯行號:": lineNumber, "出錯列號:": columnNumber, "錯誤詳情:": errorObj }; alert(JSON.stringify(rst, null, 10)); }); };1. 常用方法 - js
字符串長度截取
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 + "..." }
替換全部
String.prototype.replaceAll = function(s1, s2) { return this.replace(new RegExp(s1, "gm"), s2) }
清除空格
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*| *)$/, ""); }
判斷是否以某個字符串開頭
String.prototype.startWith = function (s) { return this.indexOf(s) == 0 }
判斷是否以某個字符串結束
String.prototype.endWith = function (s) { var d = this.length - s.length; return (d >= 0 && this.lastIndexOf(s) == d) }
轉義html標簽
function HtmlEncode(text) { return text.replace(/&/g, "&").replace(/"/g, """).replace(//g, ">") }
時間日期格式轉換
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 }
判斷是否為數字類型
function isDigit(value) { var patrn = /^[0-9]*$/; if (patrn.exec(value) == null || value == "") { return false } else { return true } }
設置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;" }
獲取cookie值
function getCookie(name) { var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)")); if (arr != null) return unescape(arr[2]); return null }
加載樣式文件表
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 evalscript(s) { if(s.indexOf("/ig; var arr = []; while(arr = p.exec(s)) { var p1 = //i; var arr1 = []; arr1 = p1.exec(arr[0]); if(arr1) { appendscript(arr1[1], "", arr1[2], arr1[3]); } else { p1 = //i; arr1 = p1.exec(arr[0]); appendscript("", arr1[2], arr1[1].indexOf("reload=") != -1); } } return s; }
清除腳本內容
function stripscript(s) { return s.replace(/.*?/ig, ""); }
動態加載腳本文件
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) {} }
返回按ID檢索的元素對象
function $(id) { return !id ? null : document.getElementById(id); }
檢驗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); } } }
獲取當前路徑
var currentPageUrl = ""; if (typeof this.href === "undefined") { currentPageUrl = document.location.toString().toLowerCase(); }else { currentPageUrl = this.href.toString().toLowerCase(); }
獲取頁面高度
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); }
獲取頁面可視寬度
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 uniqueId(){ var a=Math.random,b=parseInt; return Number(new Date()).toString()+b(10*a())+b(10*a())+b(10*a()); }
日期格式化函數
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; } //調用 //new Date().format("yyyy-MM-dd hh:mm:ss");
返回頂部的通用方法
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");
獲得URL中GET參數值
// 用法:如果地址是 test.htm?t1=1&t2=2&t3=3, 那么能取得:GET["t1"], GET["t2"], GET["t3"] function get_get(){ querystr = window.location.href.split("?") if(querystr[1]){ GETs = querystr[1].split("&"); GET = []; for(i=0;i數組去重
String.prototype.unique=function(){ var x=this.split(/[ ]+/); var y=""; for(var i=0;i按字典順序,對每行進行數組排序
function SetSort(){ var text=K1.value.split(/[ ]/).sort().join(" ");//順序 var test=K1.value.split(/[ ]/).sort().reverse().join(" ");//反序 K1.value=K1.value!=text?text:test; }字符串反序輸出
function IsReverse(text){ return text.split("").reverse().join(""); }金額大寫轉換函數
//格式轉換 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; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/49663.html
摘要:常用模式片段之摘要第一次看到這個字眼是在中,即。之后也見到一些別人的代碼里有,它和頁面的有什么關系,以及和有何淵源。以前都見過這些詞,但都似懂非懂,今天查了些資料收集了些代碼,做個完整的理解。 CSS篇 常用模式片段之CSS布局篇 http://jsorz.cn/blog/2016/08/code-patterns-of-css-layout.html 摘要:position 拉伸性質...
摘要:常用模式片段之摘要第一次看到這個字眼是在中,即。之后也見到一些別人的代碼里有,它和頁面的有什么關系,以及和有何淵源。以前都見過這些詞,但都似懂非懂,今天查了些資料收集了些代碼,做個完整的理解。 CSS篇 常用模式片段之CSS布局篇 http://jsorz.cn/blog/2016/08/code-patterns-of-css-layout.html 摘要:position 拉伸性質...
摘要:在資源很多時,例如圖片的復制,這個會加快任務的執行速度,特別是需要實時預覽時,減少延遲。但是作為個入門短時間內還是不能夠被取代得了的。 gulp常用功能集合(開發和生產分離、靜態資源壓縮優化、代碼優化、實時預覽、hash) tags: gulp 前端自動化開發 npm倉庫下載地址https://www.npmjs.com/package/cddgulp [TOC]本人自用在此基礎上的...
摘要:概述上一章講的是分離樣式,這一章講的是剩下的一些我常用的插件和上一章是沒有任何關系。環境搭建定義環境插件介紹這個插件用來定義環境變量的,直接定義在了下。安裝依賴添加資源修改配置打包其他更多配置請查閱關于資源源代碼 0x001 概述 上一章講的是分離樣式,這一章講的是剩下的一些我常用的插件,和上一章是沒有任何關系。 0x002 環境搭建 $ mkdir 0x0016-other-plug...
摘要:使用編輯器有一段時間一直沒找到比較順手的代碼片段補全于是決定自己整合一個全的于是便有了這個代碼片段包中包名叫有如下特性集成代碼補全集成中模塊的代碼補全集成中模塊的代碼補全集成集成中操作的代碼集成中和模塊的補全集成中代碼補全集成中集成中的 使用atom編輯器有一段時間,一直沒找到比較順手的代碼片段補全,于是決定自己整合一個全的,于是便有了這個代碼片段包,atom中包名叫 best-js-...
摘要:如果報表嵌在網頁的中,在外獲取對象如下常用方法方法說明獲取指定單元格中的控件獲取指定名字的控件獲取指定名稱的擴展控件,返回一個數組表單預覽或參數界面,都有一個對象。 上次介紹FineReport的JS API中的第一類開發--FR,這次就來介紹一下FS和contentWindow類的開發。1 FSFS是數據決策系統中的js接口,比如說FS.tabPane.addItem,先介紹幾類操作...
閱讀 2772·2021-10-14 09:42
閱讀 827·2021-10-11 10:57
閱讀 773·2019-08-30 15:54
閱讀 1914·2019-08-30 13:50
閱讀 1686·2019-08-30 11:19
閱讀 932·2019-08-29 12:38
閱讀 1425·2019-08-26 11:51
閱讀 1388·2019-08-26 10:48