一,获取客户端状态

1、获取cookie

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、获取操作系统

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状态

 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、获取浏览器版本

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、本地存储

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就可以了。

  

js 使用技巧的更多相关文章

  1. [转载]Js小技巧||给input type=“password”的输入框赋默认值

    http://www.cnblogs.com/Raywang80s/archive/2012/12/06/2804459.html [转载]Js小技巧||给input type="passw ...

  2. 一探前端开发中的JS调试技巧

    前言 调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今 ...

  3. JS小技巧大本事(持续更新)

    1. 复制N个字符 String.prototype.repeat = function(num){ return (new Array(++num)).join(this); } var a = ' ...

  4. Js常用技巧

    摘录:http://crasywind.blog.163.com/blog/static/7820316920091011643149/ js 常用技巧 1. on contextmenu=" ...

  5. Backbone.js的技巧和模式

    Backbone.js的技巧和模式 Backbone.js的技巧和模式   本文由白牙根据Phillip Whisenhunt的<Backbone.js Tips And Patterns> ...

  6. 前端开发中的JS调试技巧

    前言:调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今 ...

  7. js小技巧总结

    js小技巧总结 1.Array.includes条件判断 function test(fruit) { const redFruits = ["apple", "stra ...

  8. 【repost】一探前端开发中的JS调试技巧

    有请提示:文中涉及较多Gif演示动画,移动端请尽量在Wifi环境中阅读 前言:调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问 ...

  9. JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)

    本文实例总结了JS数组排序技巧.分享给大家供大家参考,具体如下: 1.冒泡排序 var temp = 0; for (var i = 0; i < array.length; i++) { fo ...

  10. 必备的JS调试技巧汇总

    转自http://www.jb51.net/article/88891.htm 前言:任何一个编程者都少不了要去调试代码,不管你是高手还是菜鸟,调试程序都是一项必不可少的工作.一般来说调试程序是在编写 ...

随机推荐

  1. spring-第十二篇之两种后处理器

    1.扩展IoC容器使用后处理器扩展 bean后处理器:对容器中的bean进行后处理,也就是额外的加强. 容器后处理:对IoC容器进行后处理,增强容器功能. 2.bean后处理器      负责处理容器 ...

  2. noip2018考后反思之爆0

    今年又被Han老师鞭尸了TAT noip普及组比齐同学考的都差,正在准备退役Orz 哎,算了,该放题解还是要放的:( 普及第一题我觉得没有放的必要还是放一下 Code: #include<ios ...

  3. python学习第二十二天文件byte类型

    所有的文件在计算机里面存储为二进制形式,但是我们有时候有需要将二进制转换为gbk或者utf-8形式,编码的时候encode 解码的时候decode ,下面简单阐述python二进制在文件传输过程的作用 ...

  4. 1571. [Usaco2009 Open]滑雪课Ski

    传送门 可以想到 $dp$,设 $f[i][j]$ 表示当前等级为 $i$,时间为 $j$ 的最大滑雪次数 显然上课不会上让自己等级降低的课,所以第一维 $i$ 满足无后效性 然后直接枚举 $i,j$ ...

  5. P4390 [BOI2007]Mokia 摩基亚

    传送门 对于一个询问 $(xa,ya),(xb,yb)$,拆成 $4$ 个询问并容斥一下 具体就是把询问变成求小于等于 $xb,yb$ 的点数,减去小于等于 $xa-1,yb$ 和小于等于 $xb,y ...

  6. Leetcode Lect3 时间复杂度/空间复杂度

    时间复杂度 复杂度 可能对应的算法 备注 O(1) 位运算 常数级复杂度,一般面试中不会有 O(logn) 二分法,倍增法,快速幂算法,辗转相除法   O(n) 枚举法,双指针算法,单调栈算法,KMP ...

  7. jquery遍历获取带checkbox表格的选中值以及遍历json数组

    今天整理了一下jquery遍历的两个用法,分享给大家. 1.$().each 主要用来遍历DOM元素,获取DOM的值或样式等. 2.$.each() 主要用来遍历后台ajax返回的json数组,循环将 ...

  8. elasticsearch 基础 —— Field Collapsing字段折叠

    允许根据字段值折叠搜索结果.通过按折叠键选择顶部排序文档来完成折叠.例如,下面的查询检索每个用户的最佳推文,并按喜欢的数量对它们进行排序. GET /twitter/_search { "q ...

  9. 软件工程第六组U-Helpβ版使用说明

    软件工程第六组U-Helpβ版使用说明 U-help ——告别取件烦恼 produced by 六扇门 源代码下载地址:https://github.com/U-Help/Version-1.0 安装 ...

  10. 2018-2-13-win10-uwp-简单MasterDetail

    title author date CreateTime categories win10 uwp 简单MasterDetail lindexi 2018-2-13 17:23:3 +0800 201 ...