在学习核心JavaScript的过程中,我现在学习EventListener。
我的问题是,在下面的代码中,EventListener没有在IE中触发(在Firefox和Chrome中工作正常)。
有人能告诉我我做错了什么吗?
我的代码是:
<p>The first captain of the USS Enterprise NCC-1701 was
<a id="wikipedia" href="http://en.wikipedia.org">Christopher Pike</a>.
</p>
<script type="application/javascript">
var link = document.getElementById("wikipedia");
// for firefox and other browsers
if (typeof link.addEventListener != "undefined")
{
link.addEventListener("click", clickListener, false);
}
// IE only
else if (typeof link.attachEvent != "undefined")
{
link.attachEvent("onclick", clickListener);
}
function clickListener()
{
var link = document.getElementById("wikipedia");
link.setAttribute("href", "www.example.com/");
open("http://www.example.com");
return false;
}
</script>
2条答案
按热度按时间o8x7eapl1#
这真的是完整的代码吗?如果是,那么引用应该是'clickListener'而不是'wikipediaLink. clickListener'。
真实的的问题是属性值“应用程序/javascript”不是IE友好的,将其更改为“文本/javascript”,并与函数引用沿着,您应该很好。
顺便说一下,我会使用一个抽象的addEvent函数-我的函数特别修复了JScript中的'this'关键字问题,而且由于初始赋值,它不需要检查元素是否支持addEventListener方法,因为它首先检查窗口对象:
用法:
unftdfkk2#
尝试使用以下方法确定浏览器: