View Full Version : action markers in html

09-27-2004, 02:49 AM
What's the word on placing meaningless event handlers wherever in the markup, just to tell your script what to do with the DOM? Say, for instance, that you want to go:

<element onclick="'do me'">content</element>

...and then onload, the script would iterate some element.collection, and check each onclick attribute for a "do me" string, act upon those, then, finally, either remove the onclick, or insert an actual action into it.

It works, but then, so do invalid attributes (as long as document.expando is enabled); can there be such a thing as invalid values for event handlers?

Just curious...

09-27-2004, 07:57 PM
So I gather that anything goes; that's nice (validity is cool). :D

09-27-2004, 08:18 PM
I think that's because most of us are 'what's this javascript' in this area:) We're not as good as the javascript guys, though liorean and many of the others can whoop me something good here.

You mean adding useless elements to HTML just for the purpose of your script? Well, does it validate through the w3 when you do this? I would say you should do as much as you can to keep your HTML semantic and clean, but if you need to and it validates, well than so be it:)

09-27-2004, 09:12 PM

Yes, it validates.

I'm not sure about the semantics and all, but that's probably a gray area, being that a script can mean anything we want it to. :)

09-27-2004, 10:48 PM
Perhaps if you told us what you were up to, we'd be able to suggest a better method?

09-27-2004, 11:42 PM
I'm up to thinking theoretically ;)

But for a quick/basic example:
what if I wanted put various elements into a functional group?
A name attribute would be perfect, but that is invalid, so I'll just make my own. :D

<!-- saved from url=(0013)about:internet -->
<script type="text/javascript">
window.onload = function()
var elements = document.body.getElementsByTagName("*");
for(var i = 0; i < elements.length; i++)
if(typeof elements[i].onmouseout == "function" && elements[i].onmouseout() == "foo")
elements[i].innerHTML = "namespace:foo";
<div onmouseout="return 'foo'">content...</div>
<span onmouseout="return 'foo'">content...</span>

Now, that's not really anything special by itself, but script defined grouping is potentially very useful.

By the way, that example would fire an onmouseout event for every element, so a comparison by regular expression, rather than return value, would be better... the idea remains the same, however.