Why am I getting an error for this piece of code?:
function catchevent()
{
eventSrcID=(event.srcElement)?event.srcElement.id:'undefined';
eventtype=event.type;
status=eventSrcID+' has received a '+eventtype+' event.';
}
Firefox says that event
is not defined. Actually, this is copied from here and it clearly says that it is for IE5. I use Firefox 3.6.13 on Ubuntu.
My Question is not why it doesn't work on my browser. Instead, is there a way to define event
object, as suggested by the link, that would work for my browser?
UPDATE
Why isn't this working
<html>
<head>
<script>
function catchevent( e ) {
// reference the proper event object
var e = e || window.event;
// reference the proper target
var srcElem = e.target || e.srcElement; //line no 9
// get the id of the target
var eventSrcID = srcElem.id;
alert(eventSrcID);
}
</script>
</head>
<body>
<a id="link1" href="#" onclick="catchevent()">link1</a>
<a id="link2" href="#" onclick="catchevent()">link2</a>
<a id="link3" href="#" onclick="catchevent()">link3</a>
</body>
</html>
For this i am still getting error on line no 9
e is undefined
[Break On This Error] var srcElem = e.target || e.srcElement;
Now how do I need to pass event
object on catchevent()
or is there some mistake? please suggest.
you forgot to pass event in parameters.
The event object is a global variable in internet explorer. (Actually a property of the global window variable)
Firefox is simply a different design, and event is not a global variable in firefox. Instead, it is passed into the function (so you would need to change catchEvent() to accept a parameter:
Take a look at this artice because that is not the only problem you'll face with the event model:
http://www.quirksmode.org/js/introevents.htmlQuirksmode article
In Firefox and other W3C compliant browsers, the handler function will receive an event object as an argument to the function.
IE uses a global
event
object.Here's a cross browser solution for your code.
You'll notice I used the
var
keyword when creating variables. You should do this, otherwise you're creating global variables.Also note that the keyword
this
will be a reference to the element to which the handler was assigned.In Firefox, the first param passed to a handler is the event. So a cross browser piece of code would check for a param and use it if present. If not present, it would default to window.event, the IE way.