使用JavaScript设置“自动对焦”属性无效

Hal*_*991 6 javascript html5

我正在编写一个小插件,该插件将封装自动聚焦设置,但是当我使用JavaScript动态添加属性时,它不会自动聚焦页面,这很奇怪。有没有办法解决?

HTML:

<input type="text">
Run Code Online (Sandbox Code Playgroud)

JS:

document.querySelector('input').setAttribute('autofocus', 'autofocus');
Run Code Online (Sandbox Code Playgroud)

不做:

document.querySelector('input').setAttribute('autofocus', 'autofocus').focus();
Run Code Online (Sandbox Code Playgroud)

jSFiddle:http : //jsfiddle.net/wPUNN/

Joh*_*n b 9

尝试这样的事情

document.querySelector('input').focus()
Run Code Online (Sandbox Code Playgroud)

编辑

如果你想要 HTML 5 标准,你应该让 HTML 看起来像这样

<input type="text" autofocus>
Run Code Online (Sandbox Code Playgroud)

http://www.whatwg.org/specs/web-apps/current-work/multipage/association-of-controls-and-forms.html#autofocusing-a-form-control:-the-autofocus-attribute


小智 7

最好的方法似乎是这样的:

document.querySelector('input').autofocus = true;
Run Code Online (Sandbox Code Playgroud)

这篇文章可能有助于解释为什么使用反射属性:/sf/answers/1313929221/

但是,您似乎需要在文档加载附近应用它。不然好像不会火。我认为这是因为这里(http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#autofocusing-a-form-control:-the-autofocus-attribute:the-dialog -element)它被定义为在页面加载后立即工作。我还没有看到任何其他内容表明可以稍后调用它。每次我稍后尝试使用 3 秒的 setTimeout 来触发它时,它都不会聚焦该字段。