关于火狐(firefox)及ie下event获取的两种方法

第一种方法

代码如下:

function a(e){
e=e||window.event;
alert(e.keyCode);
} 

ie浏览器如下调用

代码如下:

<body onclick="a()"> 

firefox火狐浏览器如下调用

代码如下:

<body onclick="a(event)"> 

这样就可以调用成功。 
这种方法在firefox需要带个参数过去,不是太好,下面介绍第二种方法 。

第二种方法

代码如下:

function a(){
e=arguments.callee.caller.arguments[0] || window.event;
alert(e.keyCode);
} 

ie和firefox下都如下调用

代码如下:

<body onclick="a()"> 

这里要解释一下arguments.callee.caller.arguments[0], 
简单例子如下:

代码如下:

function a(){
b();
}
function b(){
alert(b === arguments.callee)
alert(b.caller === a)
alert(arguments.callee.caller === a)
}
a(); 

上面的这个例子将输出3个true,表明当a()调用时,函数b与函数a的关系。 
arguments.callee指的就是当前的函数体; 
arguments.callee.caller就是当前函数的上级函数; 
所以当执行onclick="a()"时arguments.callee就是a(),arguments.callee.caller就是function onclick; 
onclick的第一个参数就是event,也就是arguments.callee.caller.arguments[0]这个。

时间: 2024-10-10 00:54:42

关于火狐(firefox)及ie下event获取的两种方法的相关文章

suse下设置IP的两种方法

/Files/yzhxhwt/DB_51aspx.rar 第一种SUSE Linux IP设置方法ifconfig eth0 192.168.1.22 netmask 255.255.255.0 uproute add default gw 192.168.1.2 释义:#IP配置,包括子网掩码,看情况修改eth0和192.168.1.22 #网关修改 ,看情况修改192.168.1.2 第二种SUSE Linux IP设置方法 在suse操作系统中每个网卡都有一个配置文件,在/etc/sysc

Linux 下操作GPIO(两种方法,驱动和mmap)(转载)

目前我所知道的在Linux下操作GPIO有两种方法: 1.编写驱动,这当然要熟悉Linux下驱动的编写方法和技巧,在驱动里可以使用ioremap函数获得GPIO物理基地址指针,然后使用这个指针根据ioctl命令进行GPIO寄存器的读写,并把结果回送到应用层.这里提供一点程序片断供大家参考: int  init_module(void){ printk(KERN_ALERT "ioctl load.\r\n"); register_chrdev(254,"ioreg"

获取编辑器两种方法

编辑器,是地图数据进行编辑的主要工具,这个Editor其实当一个新的地图开始时就创建了.事实上,其他ArcMap扩展对象也是在创建地图时产生的. 为了获得这个Editor,可以使用FindExtensionByCLSID 或者FindExtensionByName接口. private IEditor m_editor; private IApplication app; // 方法一:FindExtensionByCLSID ... UID editorUid = new UID(); edi

上拉刷新和下拉刷新的两种方法(包括使用第三方库MJRefresh)

一.使用苹果原生的方法 1.下拉刷新 2.上拉刷新 (1 首先要新建一个footer得XIB文件,当然同时包括对应的控制器文件,例如在XIB文件中可以如下拖拉对应的控件 (2 然后在代码文件中写一个实例方法 +(instancetype)footer { return  [[[NSBundle mainBundle] loadNibNamed:@"XIB文件名" owner:nil options:nil] lastObject]; } (3 然后在我们的列表控制器中调用: /** *

js+jquery动态设置/增加/删除/获取元素属性的两种方法集锦对比(动态onclick属性设置+动态title设置)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html140/strict.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>

QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)

QT中获取选中的radioButton的两种方法 QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioButton* pbtn = qobject_cast<QRadioButton*>(ui->BG->checkedButton()); 2 QString name = pbtn->objectName(); 3 if(!QString::compare(name, "rad

linux下日期时间自动同步设置(rdate,ntpdate两种方法)

linux下同步时间,至少有两种方法:rdate,ntpdate两种.centos最小化安装默认不安装,先确认已经安装过,否则先安装.其中rdate本身是用来获取远程时间服务器上时间用的,带上 -s 参数,就可以将获取到的时间应用到本地系统. NAME       rdate - get the time via the networkSYNOPSIS       rdate [-p] [-s] [-u] [-l] [-t sec] [host...]DESCRIPTION       rdat

selenium操作下拉滚动条的几种方法

数据采集中,经常遇到动态加载的数据,我们经常使用selenium模拟浏览器操作,需要多次下拉刷新页面才能采集到所有的数据,就此总结了几种selenium操作下拉滚动条的几种方法 我这里演示的是Java版本的,使用chromedriver,当然你可以换成python或其他语言,浏览器用firefox或者phantomjs(无头浏览器),大部分都是适用的,不同浏览器有略微的差异. 初始化一个浏览器 首先要允许浏览器运行js脚本 DesiredCapabilities sCaps = new Desi

在ArcEngine下实现图层属性过滤的两种方法

转自chanyinhelv原文 在ArcEngine下实现图层属性过滤的两种方法 有时候,我们要对图层上的地物进行有选择性的显示,以此来满足实际的功能要求. 按下面介绍的方法可轻松实现图层属性过滤显示: 1.当图层已经加载时 private void ShowByFilter(AxMapControl sMapCtr, IFeatureLayer sFlyr, string sFilter) { ESRI.ArcGIS.Carto.IFeatureLayerDefinition pDef = (