![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||||||
| |||||||
|
|
Gegeben sei eine komplett nach DOM-Richtlinien erzeugte Tabelle (createElement(), appendChild() usw). Statt den Handler wie in Standard-HTML ins Tag zu schreiben: <td id="blabla" onmouseover="tuWas(this)"> wird dieser assigned: tdObj = document.createElement ("TD"); ^ |
|
... tdObj.onmouseover = function () { tuWas( ??? ) } |
|
"this" an der Stelle ??? wäre Unfug, da es sich auf ein ganz anderes Element beziehen würde! |
nreadystatechange.)|
Sollte ich gar tdObj.onmouseover = function (this) { [x] tuWas( ??? ) } schreiben? |
|
Das [x] steht nicht von ungefähr, da ich den Parameter "this" ja noch in eine Variable schreiben muss, da "this" _in_ der { } bereits wieder eine Referenz auf ein anderes Objekt darstellen würde! |
|
Bin nicht so der Fan von trial-and-error, und wollte das vorher genau durchdenken. |
|
Theoretisch sollte es möglich sein, so etwas wie diesen Pseudocode zu implementieren: __________ obj.onmouseover = function (this) { (assign this = param #1 to local var); call tuWas (local var)) |
#3
| ||||
| ||||
|
|
tdObj = document.createElement ("TD"); ^ Die Argumentliste sollte vom Methodenbezeichner nicht durch Whitespace getrennt sein, um sie von anderen Sprachelementen unterscheiden zu können. |
|
tdObj.onmouseover = function () { tuWas( ??? ) } Sollte mit "DOM" einer der Webstandards W3C-DOM Level 1+ gemeint sein, so ist diese Anweisung eben gerade nicht den "DOM-Richtlinien" entsprechend, sondern proprietär ("DOM Level 0"). Korrekt wäre: snip Sichergehen, dass `this' eben jene Referenz ist, kann man nur, wenn man EventTarget::addEventListener() aus W3C DOM Level 2+ Events verwendet. |
|
Theoretisch kann ich mir auch ein Loch ins Knie schlagen, einen Kaktus reinsetzen, den mit Essig giessen und hoffen, dass er wächst. |
|
kopfschüttelnd, |
#4
| |||
| |||
|
|
"Thomas 'PointedEars' Lahn" <PointedEars (AT) web (DOT) de> wrote: tdObj = document.createElement ("TD"); ^ Die Argumentliste sollte vom Methodenbezeichner nicht durch Whitespace getrennt sein, um sie von anderen Sprachelementen unterscheiden zu können. Uii. Du bist ja ein ganz Genauer. ;-] Sowas kann einfach auch reingerutscht sein. Wie in diesem Fall. |
|
tdObj.onmouseover = function () { tuWas( ??? ) } ^ Sollte mit "DOM" einer der Webstandards W3C-DOM Level 1+ gemeint sein, so ist diese Anweisung eben gerade nicht den "DOM-Richtlinien" entsprechend, sondern proprietär ("DOM Level 0"). Korrekt wäre: snip Sichergehen, dass `this' eben jene Referenz ist, kann man nur, wenn man EventTarget::addEventListener() aus W3C DOM Level 2+ Events verwendet. Yup. _Sofern es der Browser kann_. Leider muss meine Applikation jedoch auch noch auf IE6 laufen. :-( Und da sollte "DOM" bedeuten: "so weit nach Standard wie irgend möglich". |
|
[...] kopfschüttelnd, ebenso (bei soviel Überheblichkeit) Ich sehe ja dass du Ahnung hast; nur dieses Überhebliche, Lautstarke wertet die wieder ab - schon mal daran gedacht? -Andreas, dem das "Dankeschön!" hiermit vergangen ist |
#5
| |||
| |||
|
|
Yup. _Sofern es der Browser kann_. Leider muss meine Applikation jedoch auch noch auf IE6 laufen. :-( Und da sollte "DOM" bedeuten: "so weit nach Standard wie irgend möglich". ACK. Jedoch wird auch im MSHTML-DOM wird jener Event-Listener als Callback aufgerufen, ob man es nun proprietär mit `.onmouseover' oder proprietär mit `.attachEvent("onmouseover" ...)' macht. |
#6
| |||
| |||
|
|
Yup. _Sofern es der Browser kann_. Leider muss meine Applikation jedoch auch noch auf IE6 laufen. :-( Und da sollte "DOM" bedeuten: "so weit nach Standard wie irgend möglich". ACK. Jedoch wird auch im MSHTML-DOM wird jener Event-Listener als Callback aufgerufen, ob man es nun proprietär mit `.onmouseover' oder proprietär mit `.attachEvent("onmouseover" ...)' macht. |
#7
| |||
| |||
|
|
"Thomas 'PointedEars' Lahn" <PointedEars (AT) web (DOT) de> wrote: Yup. _Sofern es der Browser kann_. Leider muss meine Applikation jedoch auch noch auf IE6 laufen. :-( Und da sollte "DOM" bedeuten: "so weit nach Standard wie irgend möglich". ACK. Jedoch wird auch im MSHTML-DOM wird jener Event-Listener als Callback aufgerufen, ob man es nun proprietär mit `.onmouseover' oder proprietär mit `.attachEvent("onmouseover" ...)' macht. Hoppla! Jetzt sagst du zu attachEvent() _ebenfalls_ "proprietär"! |
|
Doof gefragt...Was wäre denn dann "nicht proprietär"? :-) |
|
Ich habe mir bereits mehrere Mausverfolger aus dem Netz heruntergeladen. Bei uns laufen genug Katzen rum, da muß ich mir keinen Mausverfolger |
#8
| |||
| |||
|
|
tdObj = document.createElement ("TD"); ... tdObj.onmouseover = function () { tuWas( ??? ) } "this" an der Stelle ??? wäre Unfug, da es sich auf ein ganz anderes Element beziehen würde! |
|
obj.onmouseover = function (this) { (assign this = param #1 to local var); call tuWas (local var)) |
#9
| |||
| |||
|
|
tdObj = document.createElement ("TD"); ... tdObj.onmouseover = function () { tuWas( ??? ) } "this" an der Stelle ??? wäre Unfug, da es sich auf ein ganz anderes Element beziehen würde! |
|
Sollte ich gar tdObj.onmouseover = function (this) { [x] tuWas( ??? ) } schreiben? |
#10
| |||
| |||
|
|
Jetzt sagst du zu attachEvent() _ebenfalls_ "proprietär"! Gut beobachtet. attachEvent() -- nicht zu velwechsern mit addEventListener() -- ist eine Methode des MSHTML-DOMs. Doof gefragt...Was wäre denn dann "nicht proprietär"? :-) Standardkonform ist eine Implementation von EventTarget::addEventListener(), wie ich schon erwähnte. |
|
Man könnte jedoch tetrapilotomisch argumentieren, dass selbst standardisierte Schnittstellen immer einen Ansatzpunkt in der DOM-Implementation brauchen, der notwendigerweise implementationsspezifisch und somit proprietär ist. Insofern ist vollständig standardkonformes DOM-Scripting gar nicht möglich; |
|
dies hat jedoch keine praktische Relevanz und wird daher i.d.R. zu Recht vernachlässigt. |
![]() |
| Thread Tools | |
| Display Modes | |
| |