转载于:http://blog.csdn.net/jiachunfeng/article/details/6448186 http://justcoding.iteye.com/blog/587876

event对象

IE 中可以直接使用 event 对象,而 FF 中则不可以,解决方法之一如下:
var theEvent = window.event || arguments.callee.caller.arguments[0];

第二种是将 event 作为参数来传递:
function xxx(e){var theEvent = window.event || e;}

srcElement 和 target

在 IE 中 srcElement 表示产生事件的源,比如是哪个按钮触发的 onclick 事件,FF 中则是 target。

var theEvent = window.event || arguments.callee.caller.arguments[0];
var theObj=theEvent.target || theEvent.srcElement;

例子:

document.onclick = function(e){
           var theEvent = window.event || e;
           var theObj=theEvent.target || theEvent.srcElement;

function clickAction(){
       var theEvent = window.event || arguments.callee.caller.arguments[0];
       var theObj=theEvent.target || theEvent.srcElement;

// do something;
}

function clickAction(e){
       var theEvent = window.event || e;
       var theObj=theEvent.target || theEvent.srcElement;

// do something;
}

event.keyCode 和event.which

FF不支持window.event.keyCode,代替着是event.which

列子:

//在网页上面屏蔽tab键的代码
document.onkeydown = function (e){
            var theEvent = window.event || e;
            var code = theEvent.keyCode || theEvent.which;
            if(code == 9){
              return false;
            }
}

============

Query对DOM的事件触发具有冒泡特性。有时利用这一特性可以减少重复代码,但有时候我们又不希望事件冒泡。这个时候就要阻止 jQuery.Event冒泡。

jQuery.Event 的文档 中的开头得知,jQuery.Event对象是符合W3C标准的一个事件对象,同时jQuery.Event免去了检查兼容IE的步骤。

jQuery.Event提供了一个非常简单的方法来阻止事件冒泡:event.stopPropagation();

  1. $("p").click(function(event){
  2. event.stopPropagation(); // do something
  3. })
  1. <span style="font-size:18px;">$("p").click(function(event){
  2. event.stopPropagation(); // do something
  3. })</span>

但是这个方法对使用live 绑定的事件没有作用,需要一个更简单的方法阻止事件冒泡:return false;

  1. $("p").live("click", function(){
  2. $(this).after("Another paragraph!");
  3. return false;
  4. });
  1. <span style="font-size:18px;">$("p").live("click", function(){
  2. $(this).after("Another paragraph!");
  3. return false;
  4. });</span>

另外 JavaScript 阻止冒泡

 阻止冒泡事件的方法有两种,第一种是IE的方法,第二种是DOM方法,至于为什么要分为两种方法去讨论之,这里就不做讨论了,总之是浏览器一些蹩脚的问题,好了废话不说了,直接贴代码了:

  1. //阻止冒泡事件
  2. function stopBubble(e) {
  3. if (e && e.stopPropagation) {//非IE
  4. e.stopPropagation();
  5. }
  6. else {//IE
  7. window.event.cancelBubble = true;
  8. }
  9. }
  1. <span style="font-size:18px;">   //阻止冒泡事件
  2. function stopBubble(e) {
  3. if (e && e.stopPropagation) {//非IE
  4. e.stopPropagation();
  5. }
  6. else {//IE
  7. window.event.cancelBubble = true;
  8. }
  9. }</span>

举个例子:就是谷歌首页的更多选项吧,不知道的可以去看看http://www.google.com/
这里要应用两个点击事件,一个是div.onclick,另一个就是document.onclick,那么问题就出现了,在调用 div.onclick的时候,由于冒泡事件的存在,会自动的调用document.onclick,由于冒泡的顺序是从里向外的

(div->body->document->html)所以 div.onclick事件就会被覆盖掉,也就不会执行了,解决的方案其实也是很简单的哦,就是在执行div.onclick的时候阻止冒泡事件就好了, 那怎么阻止呢,就调用上面的函数就ok了!哈哈!
ps:在介绍一下阻止浏览器默认行为的方法,大同小异,这里就不再赘述了。

  1. function stopDefault(e) {
  2. //阻止默认浏览器动作(W3C)
  3. if (e && e.preventDefault)
  4. e.preventDefault();
  5. //IE中阻止函数器默认动作的方式
  6. else
  7. window.event.returnValue = false;
  8. return false;
  9. }

[转]IE和FireFox中JS兼容之event .的更多相关文章

  1. IE和FireFox中JS兼容之event .

    event对象 IE 中可以直接使用 event 对象,而 FF 中则不可以,解决方法之一如下:var theEvent = window.event || arguments.callee.call ...

  2. css padding在ie7、ie6、firefox中的兼容问题

    padding 简写属性在一个声明中设置所有内边距属性. 说明这个简写属性设置元素所有内边距的宽度,或者设置各边上内边距的宽度.行内非替换元素上设置的内边距不会影响行高计算:因此,如果一个元素既有内边 ...

  3. 原型扩展的方法解决IE和Firefox的Js兼容问题

    if(!document.all){//textContent->text    Element.prototype.__defineGetter__('text',function(){ret ...

  4. js事件源window.event.srcElement兼容性写法

    <html> <body> <p>一个好处就是 我想让body(或其他元素内)的某些对象响应事件 就不用挨个儿去写 只要在外层上写一个 然后检查event.srcE ...

  5. JS网站当前日期在IE9、Chrome和FireFox中年份显示为113年的解决方法 getFullYear();

    JS网站当前日期在IE9.Chrome和FireFox中年份显示为113年的解决方法 getFullYear();

  6. JS中的兼容问题总结

    今天总结总结在JS里面遇到的兼容性问题 1.获取滚动距离的兼容性问题: document.documentElement.scrollTop  ||  document.body.scrollTop ...

  7. [转]FireFox与IE 下js兼容触发click事件的代码

    本文转自:http://www.jb51.net/article/16549.htm FireFox与IE 下js兼容触发click事件 ,对于需要兼容这两者的朋友,就需要参考下下面的代码了<a ...

  8. JS中浏览器兼容问题

    body的子节点IE 火狐 显示3个  其他显示7个 float浮动中的兼容 link 操作外联的兼容

  9. IE 和Firefox的js兼容性总结

    IE 和Firefox的js兼容性总结 12 August 2010 11:39 Thursday by 小屋 标签: 浏览器 方法 属性 IT 写法 一.函数和方法差异 1 . getYear()方 ...

随机推荐

  1. java全栈day34---表单CSS

    今日内容介绍 1 使用html的表单标签编写“注册页面” 2 使用DIV和CSS重写网站首页 所有的html标签中,表单标签是最重要的.在实际开发中,最经典的实例就是用户注册,覆盖 了表单标签的所有的 ...

  2. SpringMVC 配置式开发-BeanNameUrlHandlerMapping(七)

     第一种处理器映射器BeanNameUrlHandlerMapping.class(注册器映射器 bean节点的class属性中用到的,这种方式dean id属性必须要以“/”开头) 第二种处理器映射 ...

  3. Java50道经典习题-程序29 求矩阵对角线之和

    题目:求一个3*3矩阵对角线元素之和分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出. 例如:下面矩阵的对角线之和为24 1 4 6 2 5 3 9 7 8 public cla ...

  4. 未能加载文件或程序集“Interop.SQLDMO”或它的某一个依赖项

    程序运行没问题,当您配置好IIS后,打开安装向导时出现以下错误信息: 解决办法为:在IIS应用程序池中“启用32位应用程序”, 1,打开IIS应用程序池,选中相应应用程序池,点击右侧“高级设置” 2, ...

  5. 理解CNN中的通道 channel

    在深度学习的算法学习中,都会提到 channels 这个概念.在一般的深度学习框架的 conv2d 中,如 tensorflow .mxnet ,channels 都是必填的一个参数. channel ...

  6. [CentOS7] timedatectl设置时区

    查看当前时区日期等配置 显示可选时区 选择时区

  7. 好程序员web前端分享CSS元素类型

    好程序员web前端分享CSS元素类型 目标 1.元素类型分类依据和元素类型分类 2.元素类型的转换 3.inline-block元素类型的应用 4.置换和非置换元素的概念和应用案例 一.元素类型分类依 ...

  8. 析构函数-复制构造函数-赋值操作符重载-默认构造函数<代码解析>

    通过下面primer中的一道习题,可以更深刻的了解,析构函数,复制构造函数,赋值操作符重载,默认构造函数的使用. 但是我的结果与primer习题解答里面的并不相同,可能是编译器不同的原因导致. // ...

  9. Django forum

    Django是比较有名的Python Web框架,很多著名的网站如Instagram就是用的Django.V2EX是一个界面简洁,功能丰富的论坛,最新源码尚未开源.网络上有很多模仿V2EX外观使用其它 ...

  10. Forward链、Input链和Output链的区别

    转载自:http://blog.chinaunix.net/uid-27863080-id-3442374.html 1. 如果数据包的目的地址是本机,则系统将数据包送往Input链.如果通过规则检查 ...