繁体   English   中英

除非窗口焦点对准,否则文本字段不会焦点

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM