Wie können Sie den Fokus auf ein HTML-input-element ohne alle HTML?
Zunächst der hintergrund:
Ich arbeite in Galerie 4, also der HTML-Code für jede Seite ist genäht aus verschiedenen bits und Stücke von HTML in der gesamten Anwendung verstreut. Für die Komponente, an der ich arbeite habe ich nicht die <body>
tag, so kann ich nicht geben, es eine onload
Attribut.
Die Komponente hat ein input-element muss den Fokus, wenn die Seite geladen wird. Kennt jemand eine Möglichkeit, um den Fokus auf ein file-input - (oder andere text-Typ input) auf die Seite laden, ohne den Zugriff auf das body-tag?
Habe ich versucht, das einfügen von Skript in den Körper wie
document.body.setAttribute('onload', 'setFocus()')
(wo setFocus ist eine Funktion der Einstellung des Fokus auf das file-input-element), aber das hat nicht funktioniert. Ich kann nicht sagen, ich war überrascht, dass, obwohl.
EDIT:
Wie schon gesagt, ich glaube in der Tat müssen diese mit einer Seite Komponente. Ich landete hinzufügen von Datei-geben Sie Eingaben an das Skript, das wir verwenden, dass der Fokus auf das erste editierbare und sichtbar Eingang auf einer Seite. Bei der recherche zu diesem problem, das ich noch nicht gefunden keine Probleme mit der Sicherheit, dies zu tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser arbeitete gut für mich:
muss nützlich sein, denke ich !!!
können Sie geben dem Fenster einen onload-handler
Ich denke, Sie haben ein grundlegendes problem mit Ihrer Kapselung. Obwohl in den meisten Fällen könnten Sie fügen Sie einen Ereignis-handler für das onload-Ereignis - siehe http://ejohn.org/projects/flexible-javascript-events/ von John Resig für wie dies zu tun, setFocus muss verwaltet werden, durch eine Seite der Komponente, da Sie nicht zwei Komponenten auf Ihrer Seite erfordert, dass Sie den Fokus erhält wenn die Seite geladen wird.
Versuchen Sie spielen mit tabstop Attribut
Zunächst die input-Datei ist nicht das gleiche wie die anderen Eingänge, Sie müssen diese im Auge behalten.... das ist aus Gründen der Sicherheit. Wenn die input-Datei Fokus erhalten, es sollte nur gelesen werden, oder soll der browser popup-dialog zur Auswahl einer Datei.
Nun, für die anderen Eingänge, die Sie könnten versuchen, einige onload-Ereignis auf einige Ihrer Elemente...(nicht nur den Körper, haben Sie das onload-Ereignis) oder Sie können inline-javascript-Code in die Mitte des html. Wenn Sie javascript-code, ohne zu sagen, dass eine Funktion wird ausgeführt, während der browser liest es. So etwas wie:
Die Funktion wird ausgeführt, nachdem die Warnung nur, wenn der browser liest es.
Wenn du kannst, solltest du jQuery verwenden, um Ihre javascript. Es wird Ihr Leben soooo viel einfacher.... 🙂
Mit jQuery getan werden könnte, wie diese:
Mit plain javascript getan werden könnte, wie diese:
Für aufwändigere Lösung mit plain javascript sehen Setzen Sie den Fokus auf den Ersten Eingang auf der Web-Seite auf CodeProject.
Scunliffe die Lösung hat ein usability-Vorteil.
Wenn die Seite Skripte laden langsam, anrufen focus() von "onLoad" - Ereignis ist eine sehr unangenehme Seite "springen", wenn der Benutzer scrollt, Weg die Seite. Also das ist ein benutzerfreundlicher Ansatz: