Ich habe das vorher nie bemerkt, aber es scheint, dass es nicht möglich ist, ein Eingabefeld auf load zu fokussieren, wenn ein Hash auf ein existierendes Element gesetzt ist.Konnte Eingabe nicht fokussieren, wenn der Hash gesetzt ist
Warum ist das?
Schauen Sie sich das sehr einfaches Beispiel:
<!doctype html>
<html>
<head>
<meta charset="utf8">
<title>Focus test</title>
</head>
<body>
<div id="bar">
<input name="foo">
</div>
<script>
console.log(document.activeElement);
document.getElementsByTagName('input')[0].focus();
console.log(document.activeElement);
</script>
</body>
</html>
Wenn Sie die Eingabe, die Seite in Chrome laden wird fokussiert werden. Wenn Sie den Hash auf #bar setzen und die Seite neu laden, wird die Eingabe nicht fokussiert. Wenn Sie den Hash auf # nicht existierendes Element setzen, wird die Eingabe erneut fokussiert.
activeElement
sagt body
und später input
unabhängig davon, ob ein Hash festgelegt ist oder nicht seltsam genug.
Was ist die Frage? Was ist das erwartete Verhalten? – Rayon
Warum ist es nicht möglich, ein Eingabefeld zu fokussieren, wenn ein Hash festgelegt ist, ist die Frage. Das erwartete Verhalten besteht darin, dass die Eingabe den Fokus erhält. – powerbuoy
Wie würde der Browser bestimmen, was er bevorzugen soll? Was ist mit "Hash" in der URL? Ich kann keinen überzeugenden Hinweis liefern, aber so sollte es sich verhalten. Die Einstellung 'focus' nach' setTimeout' hilft! – Rayon