js 使用技巧
一,获取客户端状态
1、获取cookie
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | function cookieInfo() { setcookie( 'cookie_test' , '1' ); var cookie_test = getcookie( 'cookie_test' ); if ( '1' != cookie_test) { return '关闭' ; } else { return '开启' ; } } function setcookie(name,value) //两个参数,一个是cookie的名子,一个是值 { var exp = new Date(); exp.setTime(exp.getTime() + 10*1000); document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString(); } function getcookie(name) //取cookies函数 { var arr = document.cookie.match( new RegExp( "(^| )" +name+ "=([^;]*)(;|$)" )); if (arr != null ) return unescape(arr[2]); return null ; } |
2、获取操作系统
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | function osInfo() { var sUserAgent = navigator.userAgent; var isWin = (navigator.platform === "Win32" ) || (navigator.platform === "Windows" ); var isMac = (navigator.platform === "Mac68K" ) || (navigator.platform === "MacPPC" ) || (navigator.platform === "Macintosh" ) || (navigator.platform === "MacIntel" ); var bIsIpad = sUserAgent.match( "iPad" ); var bIsIphoneOs = sUserAgent.match( "iPhone" ); var isUnix = (navigator.platform === "X11" ) && !isWin && !isMac; var isLinux = (String(navigator.platform).indexOf( "Linux" ) > -1); var bIsAndroid = sUserAgent.match( "Android" ); var bIsCE = sUserAgent.match( "Windows CE" ) || sUserAgent.match( "WinCE" ) || sUserAgent.match( "WindowsCE" ); var bIsWM = sUserAgent.match( "Windows Mobile" ); var bIsWP = sUserAgent.match( "Windows Phone OS" ); if (bIsIpad || bIsIphoneOs) return 'IOS' ; if (isMac) return "Mac" ; if (isUnix) return "Unix" ; if (isLinux) { if (bIsAndroid) return "Android" ; else return "Linux" ; } if (bIsCE) return 'Windows CE' ; if (bIsWM) return 'Windows Mobile' ; if (bIsWP) return 'Windows Phone' ; if (sUserAgent.match( "BlackBerry" )) return "BlackBerry OS" ; if (sUserAgent.match( "RIM Tablet OS" )) return "BlackBerry Tablet OS" ; if (sUserAgent.match( "(?:web|hpw)OS" )) return "webOS" ; if (sUserAgent.match( "SymbianOS/9.1" ) || sUserAgent.match( "Series[ ]?60" ) || sUserAgent.match( "S60" )) return "Series60" ; if (isWin) { var isWin2K = sUserAgent.indexOf( "Windows NT 5.0" ) > -1 || sUserAgent.indexOf( "Windows 2000" ) > -1; if (isWin2K) return "Win2000" ; var isWinXP = sUserAgent.indexOf( "Windows NT 5.1" ) > -1 || sUserAgent.indexOf( "Windows XP" ) > -1; if (isWinXP) return "WinXP" ; var isWin2003 = sUserAgent.indexOf( "Windows NT 5.2" ) > -1 || sUserAgent.indexOf( "Windows 2003" ) > -1; if (isWin2003) return "Win2003" ; var isWinVista = sUserAgent.indexOf( "Windows NT 6.0" ) > -1 || sUserAgent.indexOf( "Windows Vista" ) > -1; if (isWinVista) return "WinVista" ; var isWin7 = sUserAgent.indexOf( "Windows NT 6.1" ) > -1 || sUserAgent.indexOf( "Windows 7" ) > -1; if (isWin7) return "Win7" ; var isWin8 = sUserAgent.indexOf( "Windows NT 6.2" ) > -1 || sUserAgent.indexOf( "Windows 8" ) > -1; if (isWin8) return "Win8" ; } return "other" ; } |
3、获取flash状态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | function getFlashVersion() { var flashVer = NaN; var ua = navigator.userAgent; if (window.ActiveXObject) { var swf = new ActiveXObject( 'ShockwaveFlash.ShockwaveFlash' ); if (swf) { flashVer = Number(swf.GetVariable( '$version' ).split( ' ' )[1].replace(/,/g, '.' ).replace(/^(d+.d+).*$/, "$1" )); } } else { if (navigator.plugins && navigator.plugins.length > 0) { var swf = navigator.plugins[ 'Shockwave Flash' ]; if (swf) { var arr = swf.description.split( ' ' ); for ( var i = 0, len = arr.length; i < len; i++) { var ver = Number(arr[i]); if (!isNaN(ver)) { flashVer = arr[i]; break ; } } } } } if (!isNaN(flashVer)) { return flashVer; } else { return '未安装' ; } } |
4、获取浏览器版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | function getBrowser(){ //获取用户浏览器 var W = window,B = {}; var agent = navigator.userAgent; if (W.ActiveXObject) { B.name = 'ie' ; B.ver = 9 - (agent.indexOf( "Trident/5.0" ) == -1) - (!W.XDomainRequest) - (!W.XMLHttpRequest); } else { if (document.getBoxObjectFor || W.mozInnerScreenX != undefined) { B.name = 'firefox' ; B.ver= (m = /(?:Firefox|GranParadiso|Iceweasel|Minefield).(\d+\.\d+)/i.exec(agent)) ? parseFloat(m[1], 10) : 3.3 } else { if (!navigator.taintEnabled) { m = /AppleWebKit.(\d+\.\d+)/i.exec(agent); B.name = 'webkit' ; B.ver = m ? parseFloat(m[1], 10) : document.evaluate ? (document.querySelector ? 525 : 420) : 419; if ((m = /Chrome.(\d+\.\d+)/i.exec(agent)) || W.chrome) { B.name = 'chrome' ; B.ver = m ? parseFloat(m[1], 10) : 2 } else { if ((m = /Version.(\d+\.\d+)/i.exec(agent)) || W.safariHandler) { B.name = 'safari' ; B.ver = m ? parseFloat(m[1], 10) : 3.3 } } } else { if (W.opera) { B.name = 'opera' ; B.ver = parseFloat(navigator.appVersion, 10) } else { B.name = 'ie' ; B.ver = 6 } } } } return B.name + ':' +B.ver; } |
5、本地存储
1 2 3 4 5 6 7 8 9 10 | function localStorageInfo() { try { if ( 'localStorage' in window && window[ 'localStorage' ] !== null ) { return "开启" ; } return "关闭" ; } catch (e) { return "关闭" ; } } |
二,js 用法心得
1,setTimeout
setTimeout(function () { },1000);
定时器,1秒钟后执行,这个函数是不阻塞的,代码该往下执行就执行,不会到他这里停滞1秒,所以这个方法不适合做和sleep类似的功能。
2,new Image
var img = new Image(); img.src = new_src; img.id = num; img.className = "hide";
下面这个方法是用 new 的方法增加一个监听器,就比如说 onerror ,onclick,onload,之类的方法都需要这么做
img.addEventListener("error", function (event) { console.log($(ths)); var x = $(event.target).attr('id'); // var x = $(img).attr('id'); console.log(x,"xxxxxxxxxxxxx") });
event 是当前这个标签得到对象,如果想获取当前这个对象的内容使用event就可以了。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· 2025成都.NET开发者Connect圆满结束
· 后端思维之高并发处理方案
· 千万级大表的优化技巧
· 在 VS Code 中,一键安装 MCP Server!
· 10年+ .NET Coder 心语 ── 继承的思维:从思维模式到架构设计的深度解析