除非窗口处于焦点中,否则文本字段不会聚焦
Text field won't focus unless window is in focus
我有一个Greasemonkey脚本,可以自动输入用户信息。但是在提交表单之前,字段必须成为焦点(我认为他们使用 AngularJS 来验证是否输入了有效的名称/电子邮件)。所以在我的代码中,我这样做:
document.getElementById('name').value = "Name here"; //Enter name in field
document.getElementById('name').focus(); //Focus on the field
这工作正常,但仅当窗口处于活动状态时。如果窗口未处于活动状态,它将输入名称,但该字段不会成为焦点(因此无法提交)。是否可以进行任何修改来解决此问题?
编辑:我很难提供一个示例,因为代码必须从未活动的窗口运行,但这是输入字段的代码。
<input id="namefield[name]" name="name" ng-model="nameField.form.name" ng-pattern="nameRegex()" placeholder="John Doe" required="" style="width: 246px" type="text" class="ng-valid-pattern ng-dirty ng-valid ng-valid-required">
AngularJS在很大程度上是由AJAX驱动的,所以它可能是一个计时问题。 JS,尤其是计时器,在没有焦点的页面上会变慢。
因此,可能仅使用 AJAX 感知技术就足够了。例如:
// ==UserScript==
// @name _Focus the name input
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
introduced in GM 1.0. It restores the sandbox.
*/
waitForKeyElements ("#name", focusInput, true);
function focusInput (jNode) {
jNode[0].focus ();
}
请注意,问题代码列出:<input id="namefield[name]"...
但是搜索 ID name
.
如果这不是一个错误,这表明AngularJS正在重写HTML(我还没有学到很多AngularJS) - 这将进一步证明原始脚本的工作是由于赢得了竞争条件。 也就是说,根本不可靠。
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- 当设置addFromAutocompleteOnly时,剩余文本将保留在输入字段中
- 使用jquery将输入字段转换为文本
- 如何从查询字符串中的输入字段发回文本
- 表单输入字段随着溢出的文本而增长
- 使用单个文本框向多个字段添加严格搜索
- 使用javascript提交表单并从字段/单选框/复选框/文本区域获取数据
- 使用jQuery的输入字段文本换行
- 向使用jQuery加载DOM后添加的字段添加不受限制的文本输入DatePickers
- 当用户单击按钮(在光标位置)时,在输入字段中添加一个文本字符串
- 如何根据文本长度立即显示和隐藏字段?-JQuery
- 如何使文本、数字和日期html输入字段以一致的方式支持Ctrl+Z(撤消)
- 模拟文本输入字段上的退格键
- 输入字段中的可持续文本
- 未获取文本输入字段的值
- 没有文本安全性的密码字段
- 将禁用的输出字段更改为带前缀的文本
- 为什么 react 将输入[类型=“文本”] 字段设为只读,除非我提供 onChange 回调
- 使用SAPUI5中的“文本”字段显示正确的“日期”
- Kendo,如何将MVVM文本:字段绑定到远程DataSource