zoukankan      html  css  js  c++  java
  • window.event在IE和Firefox的异同

    网站到后期测试时发现,图片拖拽功能在IE,360,google是正常的,但在Firefox中不能正常使用。

    一步步调试发现,在console中报错“TypeError:event is not undefined”,也就是说在我们处理逻辑的函数中不存在window.event对象。

    上网查了一下发现,window.event在firefox中不是像在IE中为全局变量,只是一个临时的,需要通过参数传递到函数,或者通过其他方式获取。

    window.onload = function () {
                var target = window.event;
                console.log(typeof target);
            }

    可以分别在ie和火狐中运行这段代码,你会发现得到的结果是不一样的,IE下是object,而在firefox下则是undefined.如果直接引用event的相关属性,在控制台会报错,就像上面说的那样。

    大致原因好像是说他们遵循了不同的标准,这个就无法进一步说明了,有兴趣的可以自己搜一下。

    下面说一下解决方法

    1.通过参数传递event,而且在IE下这种方式也是兼容的。

    window.onload = function (event) {
                console.log(typeof event);
            }

    2.如果不想通过显式传递参数来做的话,这儿有另一种方式。

    window.onload = function () {
                var evt = window.event || arguments[0];
                console.log(typeof evt);
            }

    网上还有这种形式的,

    var evt = window.event || arguments.callee.caller.arguments[0];

    其实具体都是从同一个地方取值的,但不知道为什么我测试了一下这种方式,在火狐下会报错:TypeError:arguments.callee.caller is null,不知道是什么原因,具体细节可以参照这个链接www.jb51.net/article/32839.htm

    至于具体的event下的属性异同,可以参照这篇文章:http://www.ok12.net/js/125.html

    下面是参照的其他一些文章:

    http://blog.csdn.net/prettywhitewolf_xiao/article/details/7537612

    http://dbear.iteye.com/blog/814509

    http://blog.csdn.net/cyxlzzs/article/details/6711924

     

  • 相关阅读:
    2015-SH项目总结
    2015年总结
    [css]我要用css画幅画(七)
    [css]我要用css画幅画(六)
    [css]我要用css画幅画(五)
    [css]我要用css画幅画(四)
    [css]我要用css画幅画(三)
    程序遇到问题需要关闭
    ASP.NET Core 验证:(二)介绍ASP.NET Core的 Indentity
    ASP.NET Core 验证:(一)概述
  • 原文地址:https://www.cnblogs.com/prayol/p/6739554.html
Copyright © 2011-2022 走看看