【问题标题】:How to set two inputs and ungrey a button?如何设置两个输入并取消按钮?
【发布时间】:2013-04-16 14:36:59
【问题描述】:

我正在寻找一种使用 Greasemonkey 在网页中自动填写用户名/密码的方法。

这两个标签是输入,它们没有ID,但它们是页面中仅有的两个输入,当按下“登录”按钮时出现。

我是 Greasemonkey(和 javascript)的初学者,我想知道如何等待这两个输入出现。
然后有两个按钮,一个“确定”和一个“取消”按钮。 “确定”按钮是灰色的,使用element0.value="password" 设置输入不会取消按钮的灰色。

如何使用 javascript 取消灰色?

【问题讨论】:

  • 编辑您的问题以显示包含输入和按钮的准确 HTML。还链接到目标页面。展示你的尝试!
  • 无法链接到目标页面,这是一个本地页面。但是我感兴趣的两个标签的形式是 。我设法使用 var el =getElementsByTagName("input") 然后使用 el[0] 和 el[1] 检索它们。但我不确定如何等待它们出现(可能会定期检查,直到这些输入出现?),也不知道如何取消按钮。

标签: javascript greasemonkey


【解决方案1】:

问题缺少请求和必需的 HTML,但一般来说,您会使用来自 "Choosing and activating the right controls on an AJAX-driven site" 的技术。

类似:

// ==UserScript==
// @name     _YOUR_SCRIPT_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/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 ("input[type='password']", logIn);

function logIn (jNode) {
    var inputs  = $("input");

    //-- DO NOT HARDCODE LOGIN CREDENTIALS IN A SCRIPT!
    $(inputs[0]).val ("username");
    $(inputs[1]).val ("password");

    //-- Might need to trigger a change or mouse event here.

    waitForKeyElements (
        "JQUERY SELECTOR FOR THE OK BUTTON IN THE ACTIVE STATE",
        clickOK_Btn
    );
}

function clickOK_Btn (jNode) {
    triggerMouseEvent (jNode[0], "click");
}

function triggerMouseEvent (node, eventType) {
    var clickEvent = document.createEvent('MouseEvents');
    clickEvent.initEvent (eventType, true, true);
    node.dispatchEvent (clickEvent);
}


但不要硬编码登录凭据。使用a sensitive information framework

【讨论】:

    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    相关资源
    最近更新 更多