1. 如何区分IE及非IE浏览器

if(!+[1,]){
console.log("这是IE浏览器");
} else{
console.log("这不是IE浏览器");
}
<script type="text/javascript">
alert([1,2]);//相当于alert([1,2].toString()); --这在IE与非IE上都相同,都会弹出"1,2"
alert([1,]);//相当于alert([1,].toString());--在非IE的标准浏览器上,js引擎会自动删除最后的",",所以在IE上会弹出"1,",而在非IE上会弹出"1"
alert(+[1,]);//根据上面的解释,这一句在IE上相当于alert(+"1,"),而在非IE上相当于alert(+"1"),正号的作用在于试图将字符串转换为数字,"1,"当然不是数字,而"1"可以转换为数字1,所以最终的结果:IE上会转换失败弹出"NaN",而非IE浏览器上会弹出数字"1" //上面的+号转换字符串为数字的测试
var s = +"5";
alert(s+1); //ok,到这里为止,我们知道 +[1,] 最终在IE为上NaN,在非IE浏览器上则为数字1 //下面再来看看很有个性的NaN
alert(NaN==true);//弹出 false
alert(NaN==false);//弹出 false
alert(NaN==NaN);//弹出 false //即NaN不管与谁比较都是false
alert(!NaN);//相当于alert(!(NaN==true)),根据上面的解释当然是弹出true //所以,alert(!+[1,]) 最终在IE上会弹出"true",下面再来看看firefox等非IE浏览器上的表现
alert(new Boolean(0));//false
alert(new Boolean(1));//true
alert(new Boolean(-1));//true
//即:数字0会转换为false,其它任何数字都会转换为true,所以最终在非IE浏览器上最终等效于:
alert(!1);
//即
alert(!true)//最终会得到false //综上所述:下面的这个判断就能判定浏览器是不是IE
if (!+[1,]){
alert("我是货真价实的IE浏览器!")
}
else{
alert("我不是IE!")
}
</script>
这个在IE6、7、8里运行是对的,但是在9、10、11里已经修复了,和其他modern浏览器显示效果是一样的,所以,这个使用时要做区分!
2. 将日期直接转换成数值
+new Date();
3. 非IE浏览器下将类数组对象'arguments'专为数组

Array.ptrototype.slice.call(arguments);

arguments不是Array的实例,因此不是真正的数组,也就没有slice()方法,但为什么用"Array.prototype.slice"而不是"Array().slice"或"[].slice()"呢?因为这两种方法效率比较低,故使用代码中的写法访问Array的内置函数。
 4. 最简单的运算符

var a = 0 || 3;
console.log(a); //结果3 如果=后面的第一个值计算结果为布尔值“真”,则a的值取第1个,否则取第2个。
5.单链式计算

var a = 10;
console.log(a++ -1); 先执行"a-1", 在执行"a = a+1"。
6. 有趣的void操作符

<a href="javascript:void(0)">我是个死链接</a>

void是一种操作符,用来计算一个表达式但不返回值。用法: javascript:void(expression),expression是一个要计算的javascript标准表达式。
. 跳转至新页面,并且保证浏览器不会再回退
location.replace("url"); location的replace()方法可以用一个新的文档替换当前文档,并且该方法还会覆盖History对象中的记录。
8.几秒钟之后返回上一页
<meta htt-equiv="refresh" content="3, url=javascript:window.hostory.go(-1);"> 其中content为设置的时间
.在打开的子窗口中刷新父窗口
window.opener.location.reload();
10. 验证是否为负数的正则表达式
/^-\d+$/.test(str);
. 用javascript打印网页
window.print(); window.print()属于浏览器内置的API,可以直接打印页面
12. 显示/隐藏一个DOM元素
el.style.display = "";
el.style.display = "none"; DOM元素的显示/隐藏主要通过设置元素的样式display属性来实现。
. 实现alert()中的文本换行
alert("p\np"); "\n"代表换行符。
14. 实现ECMAScript5中的Object.create()函数
function clone(proto){
function _clone() {}
_clone.prototype =proto;
_clone.prototype.constructor = _clone;
return new _clone; //等价于Object.create(Person)
}
var me = clone(Person); 用原型链形式继承,构造函数重新指向新创建的对象。
15. 理解javascript中的闭包
//例如,以下代码会输出5次,结果都是5,如何输出1、2、3、4?
for(var i=0; i<5;i++) {
setTimeout(function(){
console.log(i);
},1000);
} //5次结果都是5

//利用闭包原理实现, 代码如下
for(var i=0; i<5;i++) {
(function(e) {
setTimeout(function(){
console.log(e);
},1000);
})(i)
} //5次结果都是0,1,2,3,4
16. 检测Shift、Alt、Ctrl键
//以下是浏览器内置的检测方法
event.shiftKey; //检测Shift
event.altKey; //检测Alt
event.ctrlKey; //检测Ctrl
.获取屏幕分辨率的宽、高
window.screen.height; //获取屏幕高度
window.screen.width; //获取屏幕宽度 window.screen这个对象包含了有关用户屏幕的信息
.脚本永不出错的方法
window.onerror = function(m, f, l){
return true;
};
.让javascript处理字符与ASCLL码之间的转换
console.log("a".charCodeAt(0)); //
console.log(String.fromCharCode(75)); //K charCodeAt()返回指定位置字符的Unicode编码; fromCharCode()接受一个指定的Unicode值,然后返回一个字符串。
20. 访问对象属性的代码
var demo = {name: "ki"} demo.name; //ki
demo['name']; //ki
//访问对象属性一般存在两种方式,通过","或 "[]"。 一般情况下两种方式等效,但是"[]"还可以动态设置属性。
var get = 'name';
demo[get]; //ki
21. 把一个值转化为布尔值的最简单方式
!!"demo" //true
!!"; //false
!!'0'; //true
!!'1'; //true
!!{}; //true
!!true; //true 使用"!"操作符两次,可以把一个值转化为布尔值
22. 判断浏览器是否支持HTML5
!!navigator.geolocation; 在HTML5中,navigator.geolocation可以获取设备的当前位置,通过"!"就可以判断是否支持此API,即是否支持HTML5。
23. 判断是否支持Canvas
function isCanvas() {
return !!document.createElement('canvas').getContext;
}
.判断IE版本
window.navgator.appVersion 上述代码返回一个字符串, 表示所使用浏览器的版本号。他可能只包含一个数字,比如5.0,还可能包含一些其它信息。
25. 声明变量的缩略写法与复杂写法
/*复杂写法*/
var x;
var y;
var z=3; /*缩略写法*/
var x, y, z=3; javascript是比较灵活的语言,编程时尽量使用缩略写法,这样会提高javascript性能。
26. 采取惰性载入的方案提高函数代码的性能
function addEvents(type, element, fun) {
if(element.addEventListener) {
element.addEventListener(type, fun, false);
}
else if(element.attachEvent) {
element.attachEvent('on' + type, fun);
}
else{
element['on'+tyoe] =fun;
}
} //所谓惰性载入就是在第一次执行代码后,用函数代码内部的方法覆盖原有代码,代码如下:
var addEvents = (function() {
if(element.addEventListener) {
element.addEventListener(type, fun, false);
}
else if(element.attachEvent) {
element.attachEvent('on' + type, fun);
}
else{
element['on'+tyoe] =fun;
}
})();
27. 捕捉Ctrl+Enter按键
if(event.ctrlKey && event,keyCode == 13) {
console.log("you pressed the Ctrl+Enter")
} enter.ctrlKey检测Ctrl键,event.keyCode == 13检测Enter键。
. 获取浏览器插件的数目
navigator.plugins.length; 用navigator用来检测浏览器的版本、所支持的MIME类型,已安装的外挂程序(plugin)。
29. 实现对Window、 Mac、 UNIX操作系统的操作
var osType = "",
windows = (navigator.userAgent.indexOf("Windows",0)!=-1)?1:0,
mac = (navigator.userAgent.toLowerCase().indexOf("mac",0)!=-1)?1:0,
linux = (navigator.userAgent.indexOf("Linux",0)!=-1)?1:0,
unix = (navigator.userAgent.indexOf("X11",0)!=-1)?1:0; if(windows) osType = "Windows";
else if(mac) osType = "Mac";
else if(linux) osType = "Linux";
else if(unix) osType = "Unix";
console.log(osType); navigator.userAgent表示用户代理。
30. 使用原生javascript判断是否是移动设备浏览器
var MobileReg =/iphone|ipod|android.*mobile|windows.*phone|blackberry.*mobile/i ;
if(mobileReg.test(window.navigator.userAgent.toLowerCase())) {
alert("移动设备!");
}else {
alert("非移动设备!");
}

30段有用的javascript代码的更多相关文章

  1. 一段有用的javascript加密解密

    今天在做一个老项目时,遇到一个需求,在javascript将url中的参数加密解密,从网上找发现了这段有用的代码: <SCRIPT LANGUAGE="JavaScript" ...

  2. 30段极简Python代码:这些小技巧你都Get了么

    学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现:本文同样也是 30 段代码,Python 开发者也可以看看是不是 ...

  3. 30段极简Python代码

    Python 是机器学习最广泛采用的编程语言,它最重要的优势在于编程的易用性.如果读者对基本的 Python 语法已经有一些了解,那么这篇文章可能会给你一些启发.作者简单概览了 30 段代码,它们都是 ...

  4. 网页上记录鼠标的点击次数和一段有用的php代码,自己学习使用

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!

    原文:https://github.com/Chalarangelo/30-seconds-of-code#anagrams-of-string-with-duplicates 作者:Chalaran ...

  6. 精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解

    原文:Chalarangelo  译文:IT168 https://github.com/Chalarangelo/30-seconds-of-code#anagrams-of-string-with ...

  7. 精心收集的48个JavaScript代码片段,仅需30秒就可理解

    源文链接 :https://github.com/Chalarangelo/30-seconds-of-code#anagrams-of-string-with-duplicates 该项目来自于 G ...

  8. 一段奇葩Javascript代码引发的思考

    今天与一挚友加同事调试一段奇葩的javascript代码,在分析出结果后,让我萌生了写此篇文章的想法,如有不对之处望指正,也欢迎大家一起讨论.缩减后的js代码如下,你是否能准确说明他的输出值呢? fu ...

  9. 30 段 JavaScript 代码

    1. 前端人员经常遇到的问题就是如何区分IE及非IE浏览器,JavaScript代码是: if(!+[1,]) { //IE11不支持 alert('这是IE浏览器'); }else{ alert(' ...

随机推荐

  1. 如何在Eclipse中如何自动添加注释和自定义注释风格

    1. 如何自动添加注释 可通过如下三种方法自动添加注释: (1)输入“/**”并回车. (2)用快捷键 Alt+Shift+J(先选中某个方法.类名或变量名). (3)在右键菜单中选择“Source ...

  2. 关于windows2012-远程复制粘贴无效的解决方法

    1:在远程桌面中右键点击,选择启动任务管理器,杀掉进程 2:重启服务即可:

  3. 搭建邮件服务器 Postfix + Dovecot (CentOS)

    最近分配到一台ECS服务器,需要搭建一台邮件服务器. 查了一波资料选择了Postfix (smtp)和 Dovecot(pop3). 推荐教程:http://www.cnblogs.com/zlbei ...

  4. 关于C#中的算术运算

    使用中间变量交换两个int型变量的值: ; ; a = a+b; b = a-b; a = a-b; 相信大家很容易写出来,但考虑到边界值情况时会有一些有趣的事情. 我们知道有一个int.MaxVal ...

  5. 温故而知新_C语言_define_宏

                                                                                             define defi ...

  6. GS70 使用 Linux 下面Oracle数据库时 设定 特定目录存储数据文件

    1. 创建目录 mkdir /cwdata 2. 修改目录属性 chown -R oracle:oinstall /cwdata chmod -R /cwdata 效果为: 创建数据库实例时的界面为: ...

  7. 使用Unity的2D功能开发弹球游戏

    https://mp.weixin.qq.com/s/7xjysNDVHe7avF1v2NZWcg

  8. (原创)团体程序设计天梯赛-练习集 L1-048 矩阵A乘以B (15 分)

    给定两个矩阵A和B,要求你计算它们的乘积矩阵AB.需要注意的是,只有规模匹配的矩阵才可以相乘.即若A有R​a​​行.C​a​​列,B有R​b​​行.C​b​​列,则只有C​a​​与R​b​​相等时,两 ...

  9. 解决“System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本”的问题

    以server2008为例: 首先确保使用sqlplus能访问数据库. 1.管理工具->计算机管理->本地用户和组->组->administrators属性,添加,高级,立即查 ...

  10. React Native 在用户网络故障时自动调取缓存

    App往往都有缓存功能,例如常见的新闻类应用,如果你关闭网络,你上次打开App加载的数据还在,只是不能加载新的数据了. 我的博客bougieblog.cn,欢迎前来尬聊. 集中处理请求 如果你fetc ...