'undefined' ist keine Funktion, die el.click () in Safari auswertet

8

Ich würde gerne eine js-Funktion beim Drücken der Enter-Taste ausführen. Alles funktioniert gut in IE, Chrome und Opera, aber ich bekomme einen Fehler (erklärt unten) in Safari.

Ich brauche eine reine JavaScript Lösung, nicht jQuery .

Dies ist die Funktion :

%Vor%

Dies ist das HTML :

%Vor%

Ich bekomme diesen Fehler :

%Vor%

Was mache ich falsch?

BEARBEITEN: Ich habe den Mozilla Firefox Fehler behoben.

    
Hypn0tizeR 05.10.2012, 10:22
quelle

5 Antworten

18

Wenn Sie sich die HTML DOM Level 2 Spezifikation , die click() -Funktion ist nur für HTMLInputElement definiert, also muss dies zwar nicht sehr benutzerfreundlich sein, Safari muss das aber nicht implementieren.

Der richtige Weg, um ein Ereignis für moderne Browser auszulösen, ist in DOM Level 3 Events :

%Vor%

Hier ist jsfiddle, das in Chrome, Safari, Firefox und IE9 funktioniert: Ссылка

    
lqc 06.10.2012, 23:22
quelle
3

Safari behandelt .click() als undefiniert, da .click() für Safari nicht existiert. (Ich nehme das zurück; .click() funktioniert für mich. Ich weiß es nicht: / ) Ich stieß auf dasselbe Problem, als ich an einem ähnlichen Problem arbeitete. Was ich nach ein bisschen Forschung und so entwickelt habe, ist das Folgende, um Klick-Ereignisse in Safari (und natürlich auch in anderen Browsern) auszulösen:

%Vor%

Ich weiß nicht, ob das für deine Firefox-Seite funktioniert, da dein Code laut @Dennis bereits für Firefox funktioniert. Ohne eine Umgebung, in der ich das wirklich testen könnte, fotografiere ich im Dunkeln. Ich hoffe es funktioniert für dich.

    
Daedalus 06.10.2012 22:51
quelle
2

Sie lösen ein Klickereignis in div aus, das keinen impliziten Klickhandler hätte.

    
Matt Whipple 06.10.2012 22:25
quelle
1

Ein div -Element hat standardmäßig keinen Click-Event-Handler. Zuerst müssen Sie also ein click -Ereignis für das enterSearch-div anwenden, z. %Code%. Andernfalls kann die Schaltfläche nicht angeklickt werden.

Um ein Ereignis programmgesteuert auszuführen, verwenden Sie dieses Konstrukt:

%Vor%

Ich konnte dies nicht für IE validieren, aber es funktioniert mit Safari.

    
DEAD10CC 06.10.2012 22:51
quelle
0

getElementById('enterSearch')

sollte document.getElementById('enterSearch')

sein     
xdazz 05.10.2012 10:28
quelle

Tags und Links