[英]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的了解还不是很多)-这将进一步证明原始脚本完全起作用是由于赢得了比赛条件。 也就是说,根本不可靠。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.