1. Json to String

JSON.stringify(jsonobj)//(IE8+,Chrome 1+,FF 3+) 
//参考 http://www.nowamagic.net/librarys/veda/detail/374

2. 页面刷新location.reload()和location.href=location.href

  前者相当于页面右键刷新/F5/刷新按钮;后者相当于浏览器地址栏回车。

3. 0==""

  一定要注意,0=="" 在js里是true的。

4. 调用iframe

  document.getElementById("fileUpFrame").contentWindow.document.form.file.click();
  fileUpFrame.document.form.file.click();
  frames["fileUpFrame"].document.form.file.click();

5. 无刷新上传文件

  var fraFileInput=fraForm.file;
  fraFileInput.onchange=function(){
  var fileName=this.value;
  fraForm.submit.click();
  }
  fraFileInput.click();

  注册file的onchange事件一定要在.click代码之前,否则ie有可能会注册不上onchange事件.

6. IE的键盘事件

  ie6 7 8 在window上注册的键盘事件无效,只能注册到document上;

  ie9+及其他浏览器window.onkeydown事件晚于document.onkeydown事件;

  ie8- document.onkeydown=function (e){没有传入事件对象,需要window.event}

7. IE6-7 字符串处理问题

  不支持使用数组的下标方法 txt[n]获取字符,需要使用txt.substr(n,1);

8. 获取鼠标在div(div#box>div.one*5) 内的偏移

  假设各层都是offset定位元素,并且鼠标事件发生在其中一个div.one上,可以有两种方法
  (1)加法:
  鼠标事件在div.one的偏移+div.one在div#box的偏移
  e.offsetX+(div.one).offsetX   代码大致如下

function getOffsetInParent(ele,parent){//js ele
var x=0,y=0;
while(ele && ele!=parent){
x+=ele.offsetLeft;
y+=ele.offsetTop;
ele=ele.offsetParent;
}
return {x:x,y:y};
}

  (2)减法:
  e.pageX-[(div#box).offsetLeft+div#box相对body的offsetLeft]
  祝:因为pad等移动端的touch事件没有e.offsetX属性,所以兼容性的方案是使用减法。

9.获取当前视口高度
  document.documentElement.clientHeight 和window.innerHeight(IE9+)。
  绝大多数情况下,上面两种方法的返回值是一样的,但是在chrome中,如果doctype html外面存在script或者其他标签时,documentElement.clientHeight的返回值会>视口高度。

JavaScript及兼容性笔记的更多相关文章

  1. JavaScript语言精粹笔记

    JavaScript语言精粹笔记 掌握语言的每个特性可以让你出风头,但是并不推荐,因为一部分的特性带来的麻烦可能远超本身的价值.正如书中所言,坏的材料并不能雕刻出好的作品,要成为一名更好的程序员,要取 ...

  2. JavaScript看书笔记01

    JavaScript看书笔记... ------------------- JavaScript允许var定义语句出现在函数内部的任意位置.JS中使用Var来显示的给变量声明 JavaScript是一 ...

  3. JavaScript正则表达式学习笔记(二) - 打怪升级

    本文接上篇,基础部分相对薄弱的同学请移步<JavaScript正则表达式学习笔记(一) - 理论基础>.上文介绍了8种JavaScript正则表达式的属性,本文还会追加介绍几种JavaSc ...

  4. 《你不知道的javascript》读书笔记2

    概述 放假读完了<你不知道的javascript>上篇,学到了很多东西,记录下来,供以后开发时参考,相信对其他人也有用. 这篇笔记是这本书的下半部分,上半部分请见<你不知道的java ...

  5. 《编写可维护的javascript》读书笔记(中)——编程实践

    上篇读书笔记系列之:<编写可维护的javascript>读书笔记(上) 上篇说的是编程风格,记录的都是最重要的点,不讲废话,写的比较简洁,而本篇将加入一些实例,因为那样比较容易说明问题. ...

  6. JAVASCRIPT 浏览器兼容性问题及解决方案列表

    JAVASCRIPT 浏览器兼容性问题及解决方案列表(1)获取HTML元素只兼容IE:document.all.hello hello 兼容所有: document.getElementById(“h ...

  7. javascript正则表达式 - 学习笔记

    JavaScript 正则表达式 学习笔记 标签(空格分隔): 基础 JavaScript 正则表达式是用于匹配字符串中字符组合的模式.在javascript中,正则表达式也是对象.这些模式被用于Re ...

  8. JavaScript 事件兼容性写法

    1.以下是JavaScript事件兼容性写法,使用者可以随意使用,兼容所有浏览器.包括IE6(亲测) <!DOCTYPE html> <html> <head> & ...

  9. JavaScript简易学习笔记

    学习地址:http://www.w3school.com.cn/js/index.asp 文字版: https://github.com/songzhenhua/github/blob/master/ ...

随机推荐

  1. 修改mysql某一键为自增键

    alter table tb_name modify id int auto_increment primary key

  2. mysql5.6-5.7性能调优

    1.DEFAULT_STORAGE_ENGINE 如果你已经在用MySQL 5.6或者5.7,并且你的数据表都是InnoDB,那么表示你已经设置好了.如果没有,确保把你的表转换为InnoDB并且设置d ...

  3. java HashMap那点事

    集合类的整体架构 比较重要的集合类图如下:   有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet TreeSet 是(用二 ...

  4. 细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一

    细数.NET 中那些ORM框架 —— 谈谈这些天的收获之一(转) ADO.NET Entity Framework        ADO.NET Entity Framework 是微软以 ADO.N ...

  5. 旺信UWP倒计时

    Bug数量: 2016/3/8: 34 2016/3/9: 40(一堆新Bug到来) 2016/3/10: 21(邀请用户内测,一大波虫子即将到来) 2016/3/11: 10(预期的一大波Bug还没 ...

  6. Java多线程8:wait()和notify()/notifyAll()

    轮询 线程本身是操作系统中独立的个体,但是线程与线程之间不是独立的个体,因为它们彼此之间要相互通信和协作. 想像一个场景,A线程做int型变量i的累加操作,B线程等待i到了10000就打印出i,怎么处 ...

  7. jQuery基础之选择器

    摘自:http://www.cnblogs.com/webmoon/p/3169360.html jQuery基础之选择器 选择器是jQuery的根基,在jQuery中,对事件处理.遍历DOM和Aja ...

  8. 解决SQLSERVER数据库表被琐死!

    ) )     BEGIN   Exec (@spId)   FETCH NEXT FROM TmpCursor INTO @spId   END     CLOSE TmpCursor DEALLO ...

  9. 开发人员应该对IIS理论层的知识了解的多一些~第四讲 HttpModule中的几大事件

    返回目录 本文主要介绍HttpModule,它在一个网页请求过程中是一个怎样的过程是我们要知道的,在网页加载过程中HttpModule在何时被执行也是我们要知道的,以及,HttpModule在网页请求 ...

  10. Atitit 为什么网络会有延时 电路交换与分组交换的区别

    Atitit 为什么网络会有延时 电路交换与分组交换的区别 按道理,网络是电子设备联网,应该达到光速才对.. 本质上因为互联网基于分组交换而不是电路交换. 分组交换相当于队列方式,别人发你的数据包先存 ...