ondblclick (diskrepanz in selfHTML)
Struppi
- javascript
0 Struppi0 Cheatah0 Patrick Andrieu0 Joachim0 Struppi0 Joachim0 Struppi
0 Patrick Andrieu
0 Struppi
Ich versuch grad eine Beispielseite für eines meiner genialen Skripte zu basteln ;-) dabei musste ich folgende Merkwürdigkeit feststellen.
Wenn man per JS den Event ondblclick einfügt (nach body onload natürlich):
var obj = document.getElementById('layer1');
obj.ondblclick= function () {alert('')};
HTML:
<div id="layer1">TEST</div>
Funktioniert das nicht im MZ 1.4 aber im Opera 7.11 und im IE 6.0. In selfhtml steht es genau umgekehrt http://www.netzwelt.com/selfhtml/javascript/sprache/eventhandler.htm#ondblclick
Ich hab das Beispiel mal hochgeladen http://home.arcor.de/struebig/js/lib/mouse.html
(ich benutze dort eine eigene Funktion getById() die aber letzlich das Gleiche macht)
Gibt's da eine Erklärung für warum der dblclick nicht ausgeführt wird?
Wenn ich ihn im HTML Code einfüge klappts, evtl. stimmt die Schreibweise nicht, aber in der Doku auf Mozilla wird er genauso beschrieben.
Struppi.
(Der event ist nicht wichtig, mir geht's nur um's Prinzip, da i.d.R. ja auch onclick ausreicht und der Funktionert)
Ich hab das Beispiel mal hochgeladen http://home.arcor.de/struebig/js/lib/mouse.html
(ich benutze dort eine eigene Funktion getById() die aber letzlich das Gleiche macht)
Herrlich ist außerdem, dass Opera gleichzeitig das Kontextmenü öffnet und man nur mit [ESC] diese wieder weg bekommt. Ich glaub ich vernachlässige diesne Event einfach.
Struppi.
Hi,
von Deinem Problem mal ganz abgesehen (Deiner Schlussfolgerung im zweiten Posting stimme ich zu):
(ich benutze dort eine eigene Funktion getById() die aber letzlich das Gleiche macht)
Du solltest solche Funktionen oder Methoden immer "get{Ergebnis}By{Input}" nennen, damit klar ist, was rein- und was rausgeht. Mir stellte sich hier sofort die Frage: Get was denn eigentlich by ID?
Bei Namensüberschneidungen kann man immer noch einen Unterstrich voranstellen (=> lokaler Bezeichner) oder z.B. "myGetElementById()" draus machen. Nicht ideal, aber zumindest klar erkennbar.
Cheatah
Hallo Struppi!
obj.ondblclick= function () {alert('')};
Funktioniert das nicht im MZ 1.4 aber im Opera 7.11 und im IE 6.0.
Ich bin froh, dass Du das ansprichst, die gleiche Erfahrung habe ich mal mit einer Scroll-Function, die mit onclick gestartet wird, und bei ondblclick soll gleich zum Seitenende gesprungen werden. Wie erwähnt "springen" IE und Opera gleich (musste allerdings ein Timeout einbauen), Mozilla ist nicht dazu zu bewegen und mir ist nichts besseres eingefallen, als ihn einfach auszuschliessen:
function sprung() {
if (dc.all) {
setTimeout(stopscroll, 40); // Wie lange geht ein Doppelklick? :) Nach wie vor macht Mozilla
setTimeout(ganzunten, 50); // Mucken, wird hier deswegen ausgeschlossen...
}
}
Viele Grüße aus Frankfurt/Main,
Patrick
Hi,
Funktioniert das nicht im MZ 1.4 aber im Opera 7.11 und im IE 6.0. http://home.arcor.de/struebig/js/lib/mouse.html
hmm, im mozilla 1.4 funktioniert Dein Beispiel doch, also Doppelklick feuert, Einfachklick nicht - oder hab ich mal wieder was flash verstanden?
Gruesse Joachim
Hi,
Funktioniert das nicht im MZ 1.4 aber im Opera 7.11 und im IE 6.0. http://home.arcor.de/struebig/js/lib/mouse.html
hmm, im mozilla 1.4 funktioniert Dein Beispiel doch, also Doppelklick feuert, Einfachklick nicht - oder hab ich mal wieder was flash verstanden?
In meinem nicht
Mozilla 1.4a
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4a) Gecko/20030401)
du hast ein anderes OS?
Struppi.
P.s.
@patrick, ich würde nicht mit document.all ihn ausschliessen, da er es einfach nicht macht entsteht ja kein fehler und wie du siehst scheinen andere Versionen zu funktionieren.
@cheatah: pure Faulheit, ich hatte die Funktion erst getLayer genannt und dann bei einigen Test, wo ich immer wieder switchen musste zwischen DOM und eigener Funktion hab ich die einfach so ähnlich benannt wie die DOM Funktion. Jetzt ist die Funktion halt in so vielen seiten drin, dass ich's erst mal so lasse, aber ich werd mir deinen Ratschlag zu Herzen nehmen ;-)
Hi,
du hast ein anderes OS?
nicht wissentlich ;-)
Win2k mit
Mozilla 1.4
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624
Die "a" Version war doch afaik frueher, oder?
habs grade nochmals getested. Etwas ist aber _jetzt_ anders: der alert geht zweimal auf. (Einfachklick loest ihn aber _nicht_ aus)
Gruesse Joachim
Hi,
du hast ein anderes OS?
nicht wissentlich ;-)
Win2k mit
Mozilla 1.4
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624Die "a" Version war doch afaik frueher, oder?
Naja, da ich jetzt den workaround eingebaut habe is es egal.
habs grade nochmals getested. Etwas ist aber _jetzt_ anders: der alert geht zweimal auf. (Einfachklick loest ihn aber _nicht_ aus)
So soll es sein.
Das ist zur Demonstration, das die (noch zu beschreibende) Funktion den Event einhängt in schon vorhandene. (also ein ondblclick im HTML code und einer per JS-Funktion eingefügt, beide werden abgearbeitet)
Danke, für's testen :-)
Struppi.
Hallo Struppi!
@patrick, ich würde nicht mit document.all ihn ausschliessen, da er es einfach nicht macht entsteht ja kein fehler und wie du siehst scheinen andere Versionen zu funktionieren.
Ich werde ihn doch ausschliessen müssen, denn als ich deinen Rat folgte und die if-Abfrage maskierte, wußte ich auf einmal wieder, warum ich ihn ja auschiessen wollte (tja, so ist das, wenn man monatelang seine Projekte ruhen lässt, man steigt nachher kaum noch durch):
Mozilla führt ja die Funktion "sprung" aus, die per ondblclick aufgerufen wird. Nur: es wird zwar ans Ende der Seite gesprungen, aber dennoch mit dem Scrollen angefangen. Das ist natürlich unschön, denn erst wird nach unten gesprungen, um dann zur Scroll-Anfangposition zurück zu hüpfen. Den Scroll-Stopp führt er gar nicht aus, im Gegensatz zu den beiden anderen, die mir zur Verfügung stehen. (IE 5.5 und 6.0, Opera ab 6.x)
Viele Grüße aus Frankfurt/Main,
Patrick
Meine Nachfrage in der entsprechenden NG ergab die Lösung (bzw. Workaround).
obj.addEventListener('dblclick',
function (evt) {
alert(evt.type);
},
false
);
Dank, an Martin Honnen.
Struppi.