js常用方法总结

我就是我 2022-05-15 01:07 367阅读 0赞
  1. //一、检测浏览器是否支持svg
  2. function isSupportSVG () {
  3. var SVG_NS = 'http://www.w3.org/2000/svg';
  4. return !!document.createElementNS && !!document.createElementNS(SVG_NS, 'svg').createSVGRect;
  5. }
  6. console.log(isSupportSVG());
  7. //二、检测浏览器是否支持canvas
  8. function isSupportCanvas () {
  9. if ( document.createElement('canvas').getContext ) {
  10. return true;
  11. }
  12. else {
  13. return false;
  14. }
  15. }
  16. console.log(isSupportCanvas());
  17. //三、检测是否是微信浏览器
  18. function isWeiXinClient () {
  19. var ua = navigator.userAgent.toLowerCase();
  20. if ( ua.match(/MicroMessenger/i) == "micromessenger" ) {
  21. return true;
  22. }
  23. else {
  24. return false;
  25. }
  26. }
  27. alert(isWeiXinClient());
  28. //四、检测是否移动端及浏览器内核
  29. var browser = {
  30. versions : function () {
  31. var u = navigator.userAgent;
  32. return {
  33. trident : u.indexOf('Trident') > -1, //IE内核
  34. presto : u.indexOf('Presto') > -1, //opera内核
  35. webKit : u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
  36. gecko : u.indexOf('Firefox') > -1, //火狐内核Gecko
  37. mobile : !!u.match(/AppleWebKit.*Mobile.*/), //是否移动终端
  38. ios : !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios
  39. android : u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android
  40. iPhone : u.indexOf('iPhone') > -1, //iPhone
  41. iPad : u.indexOf('iPad') > -1, //iPad
  42. webApp : u.indexOf('Safari') > -1 //Safari
  43. };
  44. }
  45. };
  46. if ( browser.versions.mobile() || browser.versions.ios() || browser.versions.android()
  47. || browser.versions.iPhone() || browser.versions.iPad() ) {
  48. alert('移动端');
  49. }
  50. //五、检测是否电脑端 / 移动端
  51. var browser = {
  52. versions : function () {
  53. var u = navigator.userAgent, app = navigator.appVersion;
  54. var sUserAgent = navigator.userAgent;
  55. return {
  56. trident : u.indexOf('Trident') > -1,
  57. presto : u.indexOf('Presto') > -1,
  58. isChrome : u.indexOf("chrome") > -1,
  59. isSafari : !u.indexOf("chrome") > -1 && (/webkit|khtml/).test(u),
  60. isSafari3 : !u.indexOf("chrome") > -1 && (/webkit|khtml/).test(u) && u.indexOf('webkit/5') != -1,
  61. webKit : u.indexOf('AppleWebKit') > -1,
  62. gecko : u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,
  63. mobile : !!u.match(/AppleWebKit.*Mobile.*/),
  64. ios : !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
  65. android : u.indexOf('Android') > -1 || u.indexOf('Linux') > -1,
  66. iPhone : u.indexOf('iPhone') > -1,
  67. iPad : u.indexOf('iPad') > -1,
  68. iWinPhone : u.indexOf('Windows Phone') > -1
  69. };
  70. }()
  71. };
  72. if ( browser.versions.mobile || browser.versions.iWinPhone ) {
  73. window.location = "http:/www.baidu.com/m/";
  74. }
  75. //六、检测浏览器内核
  76. function getInternet () {
  77. if ( navigator.userAgent.indexOf("MSIE") > 0 ) {
  78. return "MSIE"; //IE浏览器
  79. }
  80. if ( isFirefox = navigator.userAgent.indexOf("Firefox") > 0 ) {
  81. return "Firefox"; //Firefox浏览器
  82. }
  83. if ( isSafari = navigator.userAgent.indexOf("Safari") > 0 ) {
  84. return "Safari"; //Safan浏览器
  85. }
  86. if ( isCamino = navigator.userAgent.indexOf("Camino") > 0 ) {
  87. return "Camino"; //Camino浏览器
  88. }
  89. if ( isMozilla = navigator.userAgent.indexOf("Gecko/") > 0 ) {
  90. return "Gecko"; //Gecko浏览器
  91. }
  92. }
  93. //七、强制移动端页面横屏显示
  94. $(window).on("orientationchange", function ( event ) {
  95. if ( event.orientation == 'portrait' ) {
  96. $('body').css('transform', 'rotate(90deg)');
  97. }
  98. else {
  99. $('body').css('transform', 'rotate(0deg)');
  100. }
  101. });
  102. $(window).orientationchange();
  103. //八、电脑端页面全屏显示
  104. function fullscreen ( element ) {
  105. if ( element.requestFullscreen ) {
  106. element.requestFullscreen();
  107. }
  108. else if ( element.mozRequestFullScreen ) {
  109. element.mozRequestFullScreen();
  110. }
  111. else if ( element.webkitRequestFullscreen ) {
  112. element.webkitRequestFullscreen();
  113. }
  114. else if ( element.msRequestFullscreen ) {
  115. element.msRequestFullscreen();
  116. }
  117. }
  118. fullscreen(document.documentElement);
  119. //九、获得 / 失去焦点
  120. //1、JavaScript实现
  121. <input id = "i_input" type = "text" value = "会员卡号/手机号" />
  122. // JavaScript
  123. window.onload = function () {
  124. var oIpt = document.getElementById("i_input");
  125. if ( oIpt.value == "会员卡号/手机号" ) {
  126. oIpt.style.color = "#888";
  127. }
  128. else {
  129. oIpt.style.color = "#000";
  130. };
  131. oIpt.onfocus = function () {
  132. if ( this.value == "会员卡号/手机号" ) {
  133. this.value = "";
  134. this.style.color = "#000";
  135. this.type = "password";
  136. }
  137. else {
  138. this.style.color = "#000";
  139. }
  140. };
  141. oIpt.onblur = function () {
  142. if ( this.value == "" ) {
  143. this.value = "会员卡号/手机号";
  144. this.style.color = "#888";
  145. this.type = "text";
  146. }
  147. };
  148. }
  149. //2、jQuery实现
  150. < input type = "text" class= "oldpsw" id = "showPwd" value = "请输入您的注册密码" / >
  151. < input type = "password" name = "psw" class= "oldpsw" id = "password" value = "" style = "display:none;" / >
  152. // jQuery
  153. $("#showPwd").focus(function () {
  154. var text_value = $(this).val();
  155. if ( text_value == '请输入您的注册密码' ) {
  156. $("#showPwd").hide();
  157. $("#password").show().focus();
  158. }
  159. });
  160. $("#password").blur(function () {
  161. var text_value = $(this).val();
  162. if ( text_value == "" ) {
  163. $("#showPwd").show();
  164. $("#password").hide();
  165. }
  166. });
  167. //十、获取上传文件大小
  168. < input type = "file" id = "filePath" onchange = "getFileSize(this)" / >
  169. // 兼容IE9低版本
  170. function getFileSize ( obj ) {
  171. var filesize;
  172. if ( obj.files ) {
  173. filesize = obj.files[ 0 ].size;
  174. }
  175. else {
  176. try {
  177. var path, fso;
  178. path = document.getElementById('filePath').value;
  179. fso = new ActiveXObject("Scripting.FileSystemObject");
  180. filesize = fso.GetFile(path).size;
  181. }
  182. catch ( e ) {
  183. // 在IE9及低版本浏览器,如果不容许ActiveX控件与页面交互,点击了否,就无法获取size
  184. console.log(e.message); // Automation 服务器不能创建对象
  185. filesize = 'error'; // 无法获取
  186. }
  187. }
  188. return filesize;
  189. }
  190. //十一、限制上传文件类型
  191. //1、高版本浏览器
  192. < input type = "file" name = "filePath" accept = ".jpg,.jpeg,.doc,.docxs,.pdf" / >
  193. //2、限制图片
  194. < input type = "file" class = "file" value = "上传" accept = "image/*" >
  195. //3、低版本浏览器
  196. < input type = "file" id = "filePath" onchange = "limitTypes()" >
  197. /* 通过扩展名,检验文件格式。
  198. * @parma filePath{string} 文件路径
  199. * @parma acceptFormat{Array} 允许的文件类型
  200. * @result 返回值{Boolen}:true or false
  201. */
  202. function checkFormat ( filePath, acceptFormat ) {
  203. var resultBool = false,
  204. ex = filePath.substring(filePath.lastIndexOf('.') + 1);
  205. ex = ex.toLowerCase();
  206. for ( var i = 0; i < acceptFormat.length; i++ ) {
  207. if ( acceptFormat[ i ] == ex ) {
  208. resultBool = true;
  209. break;
  210. }
  211. }
  212. return resultBool;
  213. };
  214. function limitTypes () {
  215. var obj = document.getElementById('filePath');
  216. var path = obj.value;
  217. var result = checkFormat(path, [ 'bmp', 'jpg', 'jpeg', 'png' ]);
  218. if ( !result ) {
  219. alert('上传类型错误,请重新上传');
  220. obj.value = '';
  221. }
  222. }
  223. //十二、正则表达式
  224. //验证邮箱
  225. /^\w+@([0-9a-zA-Z]+[.])+[a-z]{2,4}$/
  226. //验证手机号
  227. /^1[3|5|8|7]\d{9}$/
  228. //验证URL
  229. /^http:\/\/.+\./
  230. //验证身份证号码
  231. /(^\d{15}$)|(^\d{17}([0-9]|X|x)$)/
  232. //匹配字母、数字、中文字符
  233. /^([A-Za-z0-9]|[\u4e00-\u9fa5])*$/
  234. //匹配中文字符
  235. /[\u4e00-\u9fa5]/
  236. //匹配双字节字符(包括汉字)
  237. /[^\x00-\xff]/
  238. //十三、限制字符数
  239. <input id="txt" type="text">
  240. //字符串截取
  241. function getByteVal ( val, max ) {
  242. var returnValue = '';
  243. var byteValLen = 0;
  244. for ( var i = 0; i < val.length; i++ ) {
  245. if ( val[ i ].match(/[^\x00-\xff]/ig) != null ) byteValLen += 2;
  246. else byteValLen += 1;
  247. if ( byteValLen > max ) break;
  248. returnValue += val[ i ];
  249. }
  250. return returnValue;
  251. };
  252. $('#txt').on('keyup', function () {
  253. var val = this.value;
  254. if ( val.replace(/[^\x00-\xff]/g, "**").length > 14 ) {
  255. this.value = getByteVal(val, 14);
  256. }
  257. });
  258. //十四、验证码倒计时
  259. <input id="send" type="button" value="发送验证码">
  260. // JavaScript
  261. var times = 60, // 时间设置60秒
  262. timer = null;
  263. document.getElementById('send').onclick = function () {
  264. // 计时开始
  265. timer = setInterval(function () {
  266. times--;
  267. if ( times <= 0 ) {
  268. send.value = '发送验证码';
  269. clearInterval(timer);
  270. send.disabled = false;
  271. times = 60;
  272. }
  273. else {
  274. send.value = times + '秒后重试';
  275. send.disabled = true;
  276. }
  277. }, 1000);
  278. };
  279. var times = 60,
  280. timer = null;
  281. $('#send').on('click', function () {
  282. var $this = $(this);
  283. // 计时开始
  284. timer = setInterval(function () {
  285. times--;
  286. if ( times <= 0 ) {
  287. $this.val('发送验证码');
  288. clearInterval(timer);
  289. $this.attr('disabled', false);
  290. times = 60;
  291. }
  292. else {
  293. $this.val(times + '秒后重试');
  294. $this.attr('disabled', true);
  295. }
  296. }, 1000);
  297. });
  298. //十五、时间倒计时
  299. <p id="_lefttime"></p>
  300. var times = 60,timer = null;
  301. //十六、倒计时跳转
  302. <div id="showtimes"></div>
  303. // 设置倒计时秒数
  304. var t = 10;
  305. // 显示倒计时秒数
  306. function showTime () {
  307. t -= 1;
  308. document.getElementById('showtimes').innerHTML = t;
  309. if ( t == 0 ) {
  310. location.href = 'error404.asp';
  311. }
  312. //每秒执行一次 showTime()
  313. setTimeout("showTime()", 1000);
  314. }
  315. showTime();
  316. //十七、时间戳、毫秒格式化
  317. function formatDate ( now ) {
  318. var y = now.getFullYear();
  319. var m = now.getMonth() + 1; // 注意 JavaScript 月份+1
  320. var d = now.getDate();
  321. var h = now.getHours();
  322. var m = now.getMinutes();
  323. var s = now.getSeconds();
  324. return y + "-" + m + "-" + d + " " + h + ":" + m + ":" + s;
  325. }
  326. var nowDate = new Date(1442978789184);
  327. alert(formatDate(nowDate));
  328. //十八、当前日期
  329. var calculateDate = function () {
  330. var date = new Date();
  331. var weeks = [ "日", "一", "二", "三", "四", "五", "六" ];
  332. return date.getFullYear() + "年" + (date.getMonth() + 1) + "月" +
  333. date.getDate() + "日 星期" + weeks[ date.getDay() ];
  334. };
  335. $(function () {
  336. $("#dateSpan").html(calculateDate());
  337. });
  338. //十九、判断周六 / 周日
  339. <p id = "text" > < / p >
  340. function time ( y, m ) {
  341. var tempTime = new Date(y, m, 0);
  342. var time = new Date();
  343. var saturday = new Array();
  344. var sunday = new Array();
  345. for ( var i = 1; i <= tempTime.getDate(); i++ ) {
  346. time.setFullYear(y, m - 1, i);
  347. var day = time.getDay();
  348. if ( day == 6 ) {
  349. saturday.push(i);
  350. }
  351. else if ( day == 0 ) {
  352. sunday.push(i);
  353. }
  354. }
  355. var text = y + "年" + m + "月份" + "<br />"
  356. + "周六:" + saturday.toString() + "<br />"
  357. + "周日:" + sunday.toString();
  358. document.getElementById("text").innerHTML = text;
  359. };
  360. time(2018, 5);

三十、AJAX调用错误处理

当 Ajax 调用返回 404 或 500 错误时,就执行错误处理程序。如果没有定义处理程序,其他的 jQuery 代码或会就此罢工。定义一个全局的 Ajax 错误处理程序

format_png

三十一、链式插件调用

jQuery 允许“链式”插件的方法调用,以减轻反复查询 DOM 并创建多个 jQuery 对象的过程。

format_png 1

通过使用链式,可以改善

format_png 2

还有一种方法是在(前缀$)变量中高速缓存元素

format_png 3

链式和高速缓存的方法都是 jQuery 中可以让代码变得更短和更快的最佳做法。


20191229112121499.png

想要整理更多的碎片知识,扫码关注下面的公众号,让我们在哪里接着唠!

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZWh1ODM3NzY5NDc0_size_16_color_FFFFFF_t_70

发表评论

表情:
评论列表 (有 0 条评论,367人围观)

还没有评论,来说两句吧...

相关阅读

    相关 方法总结

    关于es6中的函数 发现在日常工作中也是常用项,但是老是记不住,老要百度,特总结一下 判断是否包含 此方法不仅对 字符串生效,同样对数组也生效,对象数组不生效(仅为测试