HighDots Forums  

IE: event.clientY

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss IE: event.clientY in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #21  
Old   
Dietmar Meier
 
Posts: n/a

Default Re: IE: event.clientY - 08-20-2004 , 11:54 AM






Ralf Beutler <dieIstNichtVonMir (AT) brain4 (DOT) de> typed:

Quote:
function showPosition(evt){
[...]
if(document.getElementById) {
document.getElementById("a10").innerHTML = [...];
}
return true;
}
[...]
function init(){
window.objContainer = getLayerRef("a10");
[...]
window.objContainer.onmousemove = showPosition;
[...]
}

Aber ich lasse mich gern von einem besseren Konzept überzeugen.
Vorschlag:

function showPosition(evt){
[...]
if(typeof window.objContainer.innerHTML != undefined) {
window.objContainer.innerHTML = [...];
}
return true;
}

function init(){
window.objContainer = getLayerRef("a10");
[...]
window.objContainer.onmousemove = showPosition;
[...]
}

ciao, dhgm



Reply With Quote
  #22  
Old   
Dietmar Meier
 
Posts: n/a

Default Re: IE: event.clientY - 08-20-2004 , 11:55 AM






Dietmar 'Ingrid' Meier typed:

Quote:
if(typeof window.objContainer.innerHTML != undefined) {
latür:
if(typeof window.objContainer.innerHTML != "undefined") {

ciao, dhgm



Reply With Quote
  #23  
Old   
Ralf Beutler
 
Posts: n/a

Default Re: IE: event.clientY - 08-20-2004 , 01:13 PM



Dietmar Meier war der Meinung:
Quote:
Ralf Beutler <dieIstNichtVonMir (AT) brain4 (DOT) de> typed:
Aber ich lasse mich gern von einem besseren Konzept überzeugen.

Vorschlag:

function showPosition(evt){
[...]
if(typeof window.objContainer.innerHTML != undefined) {
window.objContainer.innerHTML = [...];
}
return true;
}

function init(){
window.objContainer = getLayerRef("a10");
[...]
window.objContainer.onmousemove = showPosition;
[...]
}
mmmh, ja. Das ist die Sache mit den globalen Variablen. Das möchte ich
eigentlich soweit wie möglich vermeiden.

Aber mal ehrlich, das Thema ist das herausfinden der Mousekoordinaten
und nicht, wie ändere ich den Inhalt eines HTML-Objektes.
Aber ich könnte die Funktion showPosition() in showPositionInA10()
umbenennen.

br | rb
--
Sie freuten sich riesig, wenn eine Maschine nach sechs Stunden etwas
fertig brachte, wozu jeder Mensch auf der Straße für 2 Cent fähig
gewesen wäre. Anschließend ließen sie sich Bananen- und Sushi-Pizza
kommen und schliefen vor der Tastatur ein. [aus T.P., Heiße Hüpfer]



Reply With Quote
  #24  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: IE: event.clientY - 08-20-2004 , 02:40 PM



Ralf Beutler wrote:

Quote:
Thomas 'PointedEars' Lahn schrieb unter anderem:
Ralf Beutler wrote:
Dietmar Meier schrieb unter anderem:
Ralf Beutler <dieIstNichtVonMir (AT) brain4 (DOT) de> typed:
| if(document.getElementById) {
| document.getElementById([...]).innerHTML = [...];

ist aber ein wenig böse.
Wieso?

Weil die Existenz von document.getElementById nicht bedeutet,
dass jeder Rückgabewert von document.getElementById([...])
eine Eigenschaft "innerHTML" besitzt.

Wenn diese Eigenschaft in JavaScript nicht existiert, wird sie doch
automatisch angelegt, oder?

Weshalb denn _JavaScript_?

vielleicht sollte ich auf
http://www.brain4.de/programmierecke/js/#start
noch in den ersten Satz noch "im Browser" mit aufnehmen.
Vielleicht solltest Du zwischen Sprache(n) und Objektmodell(en)
unterscheiden.

Quote:
`innerHTML' ist eine proprietäre Eigenschaft einiger verbreiteter DOMs.
^^^^^^^^^^^
getElementById() ist eine standardisierte Methode des W3C-DOM Level 2+.
Sie liefert entweder eine Referenz auf ein Host-Objekt, welches ggf.
das Element-Interface des W3C-DOM implementiert (ID vorhanden),

das ist dann das normale Verhalten. Also tuts.
Nur ist innerHTML eben _nicht_ im W3C-DOM definiert und es tut u.a.
genau dann nicht, wenn das implementierte DOM standardkonform ist.

Quote:
`null' (ID nicht vorhanden)

da die Funktion nur aufgerufen wird, wenn es ein Element mit dieser ID
gibt, fällt das Argument wohl flach.
Siehe unten.

Quote:
oder etwas Undefiniertes (ID mehrfach vorhanden)

Das stelle ich auf meiner Seite sicher, denn ich weiß was ich tue.
Fällt also auch flach.
Gute Scripts sind portierbar. So wäre es sinnvoller, die ID
nicht hardzucoden sondern per Argument zu übergeben. Und es
gilt auch als schlechter Stil, auf nicht-native Objekte, die
über Methoden referenziert werden, ohne Test zuzugreifen.

Quote:
Für Host-Objekte, auf die so wie hier mittels einer
ECMAScript-Implementation zugegriffen wird, gilt aber nicht zwangsläufig
das, was auch für native ECMAScript-Objekte gilt, siehe ECMAScript 3,
8.6.2.

Was willst du (bzw. ECMA) mir damit sagen?
Eine ECMAScript-konforme Implementation muss zwar (u.a.) die internen
Methoden [[Put]] und [[CanPut]] für ein Host-Objekt implementieren,
aber sie muss sie nicht so wie in 8.6.2.2 und 8.6.2.3 spezifiziert
implementieren, d.h. nicht so, dass dem Objekt damit auch tatsächlich
eine Eigenschaft hinzugefügt wird. So kann etwa [[CanPut]] schlicht
`false' liefern, wodurch ein Hinzufügen von Eigenschaften zum Host-Objekt
unmöglich ist, sofern [[Put]] standardkonform implementiert ist:

Quote:
The following table summarises the internal properties used by this
specification. The description indicates their behaviour for native
ECMAScript objects. Host objects may implement these internal methods
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
with any implementation-dependent behaviour, or it may be that a host
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
object implements only some internal methods and not others.
[...]
[[Put]] (PropertyName, Value) Sets the specified property to Value.
[...]
Every object (including host objects) must implement the [[Prototype]] and
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^
[[Class]] properties and the [[Get]], [[Put]], [[CanPut]],
^^^ ^^^^^^^^^^^^^^^^^^^
[[HasProperty]], [[Delete]], and [[DefaultValue]] methods. [...]
Davon abgesehen gibt es wahrscheinlich auch Implementationen, die nicht
ECMAScript-konform sind.


PointedEars
--
Entweder man ist konsequent oder inkonsequent.
Oder wenigstens konsequent inkonsequent.
-- ALF


Reply With Quote
  #25  
Old   
Ralf Beutler
 
Posts: n/a

Default Re: IE: event.clientY - 08-20-2004 , 04:43 PM



Thomas 'PointedEars' Lahn war der Meinung:

Quote:
Gute Scripts sind portierbar.
Oh man. Ich werde am besten auf der Seite in großen roten Buchstaben vor
diese Funktion schreiben: Bitte im richtigen Leben niemals so machen!

Ich brauche das nicht portierbar! Ich brauche es nur und ausschließlich
für diesen einen Fall. Da fange ich wegen dem bisschen Skript nicht noch
an, das komplette DOM zu kapseln.

Wenn ich etwas in ein HTML-Element schreiben will, dann nehme ich die
DOM Methoden. Die muss ich nicht auch noch kapseln. Ich habe keine Lust
mehr, auf Browser, die ausschließlich document.all kennen Rücksicht zu
nehmen. Entweder sie können die paar DOM-Methoden oder eben nicht. Dann
gibt es eben die Zusatzfeatures nicht. Na und! Wichtig ist, dass das
ganze bedienbar bleibt. Und man kann wunderbar auf einen Link klicken!

Quote:
So wäre es sinnvoller, die ID
nicht hardzucoden sondern per Argument zu übergeben.
Oh. Das ist eigentlich das, was ich gern hätte. Aber leider ist das bei
den eventhandlern immer etwas schwierig.

Quote:
Und es
gilt auch als schlechter Stil, auf nicht-native Objekte, die
über Methoden referenziert werden, ohne Test zuzugreifen.
Da gebe ich dir Recht. In einer normalen Programmersprache würde ich da
ein try .. catch drum herum machen. Da ich aber noch auf NN4.x Rücksicht
nehmen wollte, habe ich es gelassen.

Quote:
Davon abgesehen gibt es wahrscheinlich auch Implementationen, die nicht
ECMAScript-konform sind.
yupp. Aber die sind mir sowas von egal.

br | rb
--
Sie freuten sich riesig, wenn eine Maschine nach sechs Stunden etwas
fertig brachte, wozu jeder Mensch auf der Straße für 2 Cent fähig
gewesen wäre. Anschließend ließen sie sich Bananen- und Sushi-Pizza
kommen und schliefen vor der Tastatur ein. [aus T.P., Heiße Hüpfer]



Reply With Quote
  #26  
Old   
Thomas 'PointedEars' Lahn
 
Posts: n/a

Default Re: IE: event.clientY - 08-21-2004 , 04:44 AM



Ralf Beutler wrote:

Quote:
Thomas 'PointedEars' Lahn war der Meinung:
Gute Scripts sind portierbar.

Oh man. Ich werde am besten auf der Seite in großen roten Buchstaben vor
diese Funktion schreiben: Bitte im richtigen Leben niemals so machen!
Gute Idee.

Quote:
Ich brauche das nicht portierbar! Ich brauche es nur und ausschließlich
für diesen einen Fall.
Es soll eine Demo sein, die man in eigenen Scripten nachvollziehen
können soll. Portierbarkeit ist hier IMNSHO essentiell.

Quote:
Da fange ich wegen dem bisschen Skript nicht noch
an, das komplette DOM zu kapseln.
"Schlechte Beispiele verderben gute Sitten."

Und niemand hat verlangt, dass Du "das komplette DOM kapselst", was
immer Du auch damit meinst.

Quote:
Wenn ich etwas in ein HTML-Element schreiben will, dann nehme ich die
DOM Methoden.
Welchen Teil von "'innerHTML' ist (Bestandteil einiger)
proprietär(er DOMs)" hast Du noch immer nicht verstanden?

Quote:
Ich habe keine Lust mehr, auf Browser, die ausschließlich document.all
kennen*Rücksicht*zu nehmen.
Du machst mir Spaß. document.all, was in der MSDN dokumentiert ist,
und damit nur etwas ältere Versionen der IE-Browserkomponente willst
Du nicht mehr unterstützen, aber NN4, der nicht mal mehr von Netscape
selbst unterstützt wird, den schon. Du merkst aber schon noch was?

Quote:
So wäre es sinnvoller, die ID
nicht hardzucoden sondern per Argument zu übergeben.

Oh. Das ist eigentlich das, was ich gern hätte. Aber leider
ist das bei den eventhandlern immer etwas schwierig.
Stimmt, sofern das auslösende Element nicht das Zielelement ist.
Zumindest ließe sich aber mit Präfixen/Infixen/Suffixen arbyten.

Quote:
Und es gilt auch als schlechter Stil, auf nicht-native Objekte,
die über Methoden referenziert werden, ohne Test zuzugreifen.

Da gebe ich dir Recht. In einer normalen Programmersprache
^^^^^^^^^^^^^^^^^^^^^^^^^^
Blödsinn. Lerne endlich mal zu unterscheiden zwischen Sprache(n) und
DOM(s)! Und lerne zu begreifen, dass auch in anderen Programmiersprachen
geschriebene Programme eine Host-Umgebung brauchen. JavaScript bzw.
ECMAScript-konforme Implementationen sind nicht unnormaler als andere
Programmiersprachen.

Quote:
würde ich da ein try .. catch drum herum machen.
Unnötig.

Quote:
Da ich aber noch auf NN4.x Rücksicht nehmen wollte, habe ich es gelassen.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

if (...)
{
// ..
}

funktioniert auch in NN4.

Quote:
Davon abgesehen gibt es wahrscheinlich auch Implementationen, die nicht
ECMAScript-konform sind.

yupp. Aber die sind mir sowas von egal.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Anscheinend aber doch nicht.


kopfschüttelnd,
PointedEars
--
But he had not that supreme gift of the
artist, the knowledge of when to stop.
-- Sherlock Holmes


Reply With Quote
  #27  
Old   
Ralf Beutler
 
Posts: n/a

Default Re: IE: event.clientY - 08-21-2004 , 10:36 AM



Thomas 'PointedEars' Lahn war der Meinung:

Quote:
Ich brauche das nicht portierbar! Ich brauche es nur und
ausschließlich für diesen einen Fall.

Es soll eine Demo sein, die man in eigenen Scripten nachvollziehen
können soll.
Das wäre vielleicht deine Intention, ist aber nicht meine!

Es soll erklären, was da auf dieser Seite passiert. Es ist keine C&P
Seite, sondern eine Anschauseite. Jeder soll da drauf gucken und sich
das anschauen, verstehen können, was da passiert und wenn er dann noch
sagt: "Dieses oder jenes würde ich anders machen, aber ich weiß jetzt
wenigstens, in welche Richtung es gehen kann.", dann bin ichs zufrieden.

Ich habe mit dieser Seite keinerlei Absicht, irgendjemanden zu
missionieren. Der Anschauer soll den Anwendungsfall auch nicht kopieren.
Es macht auch gar keinen Sinn. Das, was er auf dieser Seite verwenden
kann, ist eine einzige Funktion. Ansonsten gibts da einen Anwendungsfall
für Demozwecke. Da kann er schauen, ob dieser auf seine Bedürfnisse
übertragbar ist. Da soll er sich auch ruhig Gedanken machen.

Ihr habt das gemacht. Prima.

fup2p

br | rb
--
Sie freuten sich riesig, wenn eine Maschine nach sechs Stunden etwas
fertig brachte, wozu jeder Mensch auf der Straße für 2 Cent fähig
gewesen wäre. Anschließend ließen sie sich Bananen- und Sushi-Pizza
kommen und schliefen vor der Tastatur ein. [aus T.P., Heiße Hüpfer]



Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.