在某些时候动态加载Javascript事件的一些方法
我们经常需要在JS中动态添加事件,这与浏览器兼容性有关。以下是我们经常使用的几种方法。

方法1、将
var obj = document.getelementbyid(目标);
obj.setattribute(onclick

这里我们使用setAttribute指定onclick属性,简单的了解。

但IE不支持IE,而不是将不支持此功能,但不支持某些属性集的属性,包括对象的属性、属性、事件属性,即风格,onclick,onmouseover这些属性设置在IE.使用将是不可能的

方法二。使用attachevent和addEventListener
IE支持attachevent

obj.attachevent(onclick
函数()
{
警报(测试);
}

也可以一起写
obj.attachevent(onclick
其他浏览器支持addEventListener

Obj.addEventListener(单击
函数()
{
警报(测试);
}

它也可以写在一起。
Obj.addEventListener(单击

注意,attachevent事件发生,如onclick,和注册侦听器不会造成,如点击。
顺便说一下,调用addEventListener的第三个参数(虽然很少使用)useCapture -如果属实,useCapture表明用户希望启动捕获,捕获开始后,所有指定类型的事件之前的任何eventtargets分配给注册的事件侦听器指定的树。如果要通过一树泡不会指定使用捕获的事件触发。

综合应用
复制代码代码如下所示:
如果(窗口。attachevent)
{
IE的事件代码
}
其他的
{
其他浏览器事件/代码
}

方法三,事件=函数

obj.onclick = foo;
这是由多个浏览器的支持,属于旧规范(方法二属于DOM2规范)。然而,由于它的方便,有许多场合要使用。

以下是我的解决方案:
复制代码代码如下所示:
函数显示(){
警报(你好,世界!!!;
}

obj.setattribute('onclick,document.all eval()函数({显示()}):'javascript:显示()');

The attachEvent method adds other processing events to an event.(not supported by Mozilla Series)

addEventListener方法应用在Mozilla系列

举个例子:

document.getelementbyid(按钮)。Onclick = 1;
document.getelementbyid(按钮)。Onclick = 2;
Document.getElementById (BTN).Onclick = method3;

如果这是书面的,只有medhot3将执行

它是这样写的。
无功btn1obj = document.getelementbyid(BTN1 );

/ / object.attachevent(事件、功能);
btn1obj.attachevent(onclick
btn1obj.attachevent(onclick
btn1obj.attachevent(onclick
执行顺序方法->方法->方法

如果它是一个Mozilla系列,它不支持这种方法,而需要使用addEventListener

无功btn1obj = document.getelementbyid(BTN1 );
/ / element.addeventlistener(类型、听众、useCapture);
btn1obj.addeventlistener(单击
btn1obj.addeventlistener(单击
btn1obj.addeventlistener(单击

执行的顺序是:->方法->方法

举个例子:

1。
复制代码代码如下所示:
var el = editform_document.body;
让 / /第一个对象,是一个iframe editform_document
如果(EL。addEventListener){
El.addEventListener(听到咔哒声,KindDisableMenu,假);
} else if(EL。attachevent){
El.attachEvent('onclick ',KindDisableMenu);
}

2。
复制代码代码如下所示:
如果(窗口。addEventListener){
Window.addEventListener(载荷,_uco,假);
如果(窗口。attachevent){ }
window.attachevent('onload ',_uco);
}