e.srcElement and e.target return the wrong element
In this case the e.srcElement/e.target should return 'home' or 'about', but instead one of the two layers inside 'home' or 'about' will be returned. And these dont even have a onmouseover attribute!
At a first glance I see a critical error: you have several elements with the same id, which is HTML/CSS/JavaScript illegal. A certain id must be unique on document/session.
It is not a bug. It looks only that you have not understood the difference between detecting/capturing an event and attaching an event.
Code:
function(e){
var eventType = e.type;
...
}
This anonymous will not act as an inner function, it will simply capture the generic event on the whole element , so that the target will be in fact the element itself or any of it's child nodes, it depends on which of them supports the event at a certain moment. To understand better, take a look at a simple example, using the onclick event:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<style type="text/css">
#container{
width:400px;
hei:400px;
background:#ccc;
}
#firstID, #secondID{
border:1px solid #ff0000;
}
</style>
<script type="text/javascript">
function check(e){
var target = (e && e.target) || (event && event.srcElement);
alert(target.id)
}
</script>
</head>
<body>
<div id="container" onclick="check(event)">
<div id="firstID">click here the first div</div>
<div id="secondID">click here the second div</div>
<br>
click here the container
</div>
</body>
</html>
That not means I have attached an onclick event to all the child nodes of the container node. I have simply captured the event onclick itself, and whenever that event is fired inside the container div, it will show me which is the target upon I have performed the click. The target might be the container itself or any of the child nodes divs, depending on where I do the click.
Okay thanks, that really explains a lot. Is there any other way to still get what I want? And that is capturing the executed code inside of onmouseover/onmouseout.
I really really really hope this is still possible.
There might be, but only if you explain us more clear what in fact you want. I confess I did not understand too much of the scope of your code. Which is your real and final aim?
My real aim is to record all executed javascript code on a page, to replay it on a later time. Pretty crazy I know.
It actually worked quitte well with a few pages, until I (you) just found out that it's an unreliable method getting the executed code with srcElement/target of an event.
Bookmarks