1. 获取iframe的window对象

 //三种方法
window.iframeName window.frames[iframeName] document.getElementById(iframeId).contentWindow

2. 使用iframe带来的影响

1)iframe的页面内容加载完成触发iframe的onload事件

2)主页面的onload事件,在iframe的onload事件触发后触发

3)iframe在加载过程中,浏览器会一直处于加载状态

我们希望的是iframe不要影响主页面的onload,可以采取的方案:主页面加载完成后,动态插入iframe

3. scrollTop

 //页面包含DOCTYPE声明时
document.documentElement.scrollTop //页面不包含DOCTYPE声明时
document.body.scrollTop
//我们希望的是,所有页面都应包含标准的文档类型定义<!DOCTYPE HTML>

4. 事件目标

 function eventHander(e) {
var e = e || window.event,
target; //IE下,event对象有srcElement属性,但是没有target属性;
//Firefox下,event对象有target属性,但是没有srcElement属性.
target = e.target || e.srcElement; //To do something
}

5. input:radio的onchange事件

IE下onchange事件被触发需要内容改变且失去焦点,而Firefox下的radio,改变了内容就能触发事件;

因此,radio的onchange事件需要用onclick事件来代替。

6. 阻止浏览器默认行为

 function eventHandler(e) {
var e = e || window.event; if(e.preventDefault) {
  //阻止默认浏览器动作(W3C)
  e.preventDefault();
} else {
  //IE中阻止函数器默认动作的方式
  e.returnValue = false;
}
} //或者直接用return false来阻止浏览器默认行为

7. 阻止事件冒泡

 function eventHandler(e) {
var e = e || window.event; if (e.stopPropagation) {
//支持W3C的stopPropagation()方法
e.stopPropagation();
} else {
//否则,我们需要使用IE的方式来取消事件冒泡
e.cancelBubble = true;
}
}

8. 屏蔽鼠标选择文本

<div class="selectBox" onselectstart="return false;" style="-moz-user-select:none;">屏蔽双击选中文字的区域</div>

9. 禁用退格键

 //处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
function forbidBackSpace(e) { var ev = e || window.event, //获取event对象
elmTarget = ev.target || ev.srcElement, //获取事件源
elmType = elmTarget.type || elmTarget.getAttribute('type'), //获取事件源类型
vReadOnly = elmTarget.readOnly, //获取作为判断条件的事件类型
vDisabled = elmTarget.disabled,
keyCode = ev.keyCode || ev.which; //firefox2.0中不支持 event.keyCode //处理undefined值情况
vReadOnly = (vReadOnly === undefined) ? false : vReadOnly;
vDisabled = (vDisabled === undefined) ? true : vDisabled; //当敲Backspace键时
if (keyCode == 8) {
//事件源类型为密码或单行、多行文本的readOnly属性为true或disabled属性为true的,则退格键失效
if ((elmType == "password" || elmType == "text" || elmType == "textarea") && (vReadOnly || vDisabled)) {
return false;
}
//事件源类型非密码或单行、多行文本的,则退格键失效
if (elmType != "password" && elmType != "text" && elmType != "textarea") {
return false;
}
}
} //禁止后退键 作用于Firefox、Opera
document.onkeypress = forbidBackSpace; //禁止后退键 作用于IE、Chrome
document.onkeydown = forbidBackSpace;

10. XMLHttpRequest 和 ActiveXObject

 var xmlHttp = null;

 if (window.XMLHttpRequest) {
//If IE7, Mozilla, Safari, and so on
xmlHttp = new XMLHttpRequest();
} else if (window.ActiveXObject) {
//for IE5.x and IE6.
xmlHttp = new ActiveXObject('MSXML2.XMLHTTP.3.0');
} xmlHttp.open("GET", yourUrl, true | false);
xmlHttp.onreadyStatechange = handler;
xmlHttp.send(null); //xmlHttp.open("POST", yourUrl, true|false);
//如果要传文件或者POST内容给服务器,必须先调用setRequestHeader方法,修改MIME类别
//xmlHttp.setRquestHeader("Content-Type", "application/x-www-form-urlencoded");
//xmlHttp.onreadyStatechange = handler;
//xmlHttp.send("name=value&someName=blaba"); function handler() {
if (xmlHttp.readyState == 4) { //响应完成
if (xmlHttp.status == 200) { //请求成功
var txt = xmlHttp.responseText;
//To do something.
}
}
} //.abort() 取消http请求
//.open(MethodString, Url, AsyncBool默认为true)
//.send(formData) 向服务器传递的参数,没有填null //Reference 更多关于XMLHttpRequest的信息
//http://msdn.microsoft.com/en-us/library/ie/ms535874(v=vs.85).aspx

.Thinking

有时候眼睁睁的看着代码,但是就不知道问题出在哪,殊不知是各种浏览器在捣蛋。了解这些差别和特性,将有助于我们Program Better!

最新文章

  1. 使用C#处理基于比特流的数据
  2. 今天第一次接触到typescript,看了第一个知识点就是变量的声明,来回忆回忆,做做笔记
  3. 【C#】让DataGridView输入中实时更新数据源中的计算列
  4. thinkphp新增
  5. BIOS开启虚拟化
  6. jenkins+gerrit
  7. python 3 操作 excel
  8. Js regular exprission
  9. OC基础教程 C语言中的格式占位符:
  10. ubuntu 下舒畅的使用libreoffice
  11. 基于Angular和Spring WebFlux做个小Demo
  12. 点击倒计时60S获取验证码
  13. LoibreOJ 2042. 「CQOI2016」不同的最小割 最小割树 Gomory-Hu tree
  14. MFC使用MsComm做串口通信
  15. 在C#中如何定义一个变长的结构数组?如果定义好了,如何获得当前数组的长度?
  16. js Object 的冻结、密封、扩展的相同以及不同点
  17. [C++] printf pitfall
  18. JAVA篇之环境安装(Windows)
  19. 洛谷P2754 [CTSC1999]家园(最大流)
  20. 2018.9.28 典型for循环特殊理解及其二维数组的理解

热门文章

  1. 数学概念——D 期望
  2. 数据结构——UVA 1600 机器人巡逻
  3. GeoPandas官方中文文档--译著
  4. Nightmare(搜索)
  5. SRM 502(2-1000pt)
  6. 【最长上升子序列】HDU 1087——Super Jumping! Jumping! Jumping!
  7. 初次了解CSS3
  8. 卸载Symantec Endpoint Protection, 无需password的卸载方法
  9. qt 关于内存泄漏的检测
  10. 深入分析 Java 中的中文编码问题--转