js 动态加载事件的几种方法总结

 我来答
丑瑜百莎莉
2020-06-18 · TA获得超过3814个赞
知道大有可为答主
回答量:3089
采纳率:28%
帮助的人:420万
展开全部
有些时候需要动态加载javascript事件的一些方法
往往我们需要在
JS
中动态添加事件,这就涉及到浏览器兼容性问题了,以下谈及的几种方法,我们也常常混合使用。
方法一、setAttribute
var
obj
=
document.getElementById("obj");
obj.setAttribute("onclick",
"javascript:alert('测试');");
这里利用
setAttribute
指定
onclick
属性,简单,很好理解,
但是:IE
不支持,IE
并不是不支持
setAttribute
这个函数,而是不支持用
setAttribute
设置某些属性,包括对象属性、集合属性、事件属性,也就是说用
setAttribute
设置
style、onclick、onmouseover
这些属性在
IE
中是行不通的。
方法二、用
attachEvent

addEventListener
IE
支持
attachEvent
obj.attachEvent("onclick",
Foo);
function
Foo()
{

alert("测试");
}
也可写在一起
obj.attachEvent("onclick",
function(){alert("测试");});
其它浏览器支持
addEventListener
obj.addEventListener("click",
Foo,
false);
function
Foo()
{

alert("测试");
}
同样也可写在一起
obj.addEventListener("click",
function(){alert("测试");},
false);
注意
attachEvent
的事件带
on,如
onclick,而
addEventListener
不带
on,如
click。
顺便说一下
addEventListener
的第三个参数(虽然很少用)
useCapture
-
如果为
true,则
useCapture
指示用户希望启动捕获。启动捕获后,所有指定类型的事件将在被指派到树中其下面的任何
EventTargets
之前指派给已注册的
EventListener。正在通过树向上
bubbling
的事件将不触发指定的使用捕获的
EventListener。
综合应用
复制代码
代码如下:
if
(window.attachEvent)
{

//IE
的事件代码
}
else
{

//其它浏览器的事件代码
}
方法三、事件
=
函数
例:obj.onclick
=
Foo;
这在多个浏览器中均支持,这是属于旧的规范(方法二属于
DOM2
的规范),不过由于使用方便,用的场合也比较多。
下面是我的解决办法:
复制代码
代码如下:
function
show(){

alert("Hello,
world!!!");
}
obj.setAttribute('onclick',document.all
?
eval(function(){show()})
:
'javascript:show()');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式