Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

addEventListener not working in Chrome

I am following a tutorial on Lynda.com about the new DOM event model.

This is the code I am working with.

function addEventHandler(oNode, sEvt, fFunc, bCapture){

if (typeof (window.event) != "undefined")
    oNode.attachEvent("on" + sEvt, fFunc);
else
    oNode.addEventListener(sEvt, fFunc, bCapture);
}

function onLinkClicked(e){
alert('You clicked the link');
}

function setUpClickHandler(){
addEventHandler(document.getElementById("clickLink"), "click", onLinkClicked, false);
}


addEventHandler(window, "load", setUpClickHandler, false);

I am adding it to the click event on this link

<a href="#" title="click me" id="clickLink">Click Me!</a>

It works perfectly fine in IE, Firefox, Opera but not in Chrome. I've looked around, but have not been able to find anything specific yet. Some similar questions but it does not answer my question.

I get the following error from the Chrome console:

Uncaught TypeError: Object [object HTMLAnchorElement] has no method 'attachEvent'

Any suggestions or a link to the answer?

like image 388
Jose Carrillo Avatar asked Apr 12 '13 09:04

Jose Carrillo


1 Answers

Why are you testing:

if (typeof (window.event) != "undefined")

...in order to decide whether to use attachEvent()? Chrome does define window.event, so then your code tries to use attachEvent() which is not defined.

Try instead testing for the method directly:

if (oNode.attachEvent)
    oNode.attachEvent("on" + sEvt, fFunc);
else
    oNode.addEventListener(sEvt, fFunc, bCapture);
like image 74
nnnnnn Avatar answered Oct 21 '22 11:10

nnnnnn