如何通过TamperMonkey设置文本字段的值?

时间:2013-10-22 20:52:19

标签: javascript tampermonkey

我是javascript和tampermonkey的新手,请在解释中记住这一点。

This is the site I'm trying to work with

你可以看到它非常简单。然而,没有办法让网站记住你的密码,现在我要做的就是制作一个脚本,填写用户名和密码字段,你猜对了,我的用户名和密码。

使用我在网上找到的一些教程(看起来好像有很多教程用于在TamperMonkey中编写脚本),我设法提出以下代码

// ==UserScript==
// @name       Powerschool Memory
// @namespace  http://use.i.E.your.homepage/ 
// @version    0.1
// @description  Makes PowerSchool remember your username and password.
// @match      https://powerschool.avon.k12.ct.us/gaurdian/home.html
// @require http://code.jquery.com/jquery-latest.js
// @copyright  2013+, You
// ==/UserScript==

jQuery(function($) {
    document.getElementById($('input[type=password]').attr('id')).textContent = 'password_here';
    document.getElementById('fieldAccount').innerHTML = 'username_here';
});

正如你所看到的,我已经尝试了两种方法来设置用户名(设置元素的innerHTML)和密码(设置textContent)字段的内容,但是似乎都不起作用。

我很确定脚本正在运行,因为每当我要导航到网站时,我都会去破折号并重新启动脚本。

我应该提到,用户名字段的ID是通过右键单击文本框,检查元素,复制并粘贴下一个id变量来获得的

你能帮助我看看我的错误在哪里,也许更重要的是,我正在做些什么来搞砸它?

1 个答案:

答案 0 :(得分:2)

对于教程和问题,您可以搜索Greasemonkey主题。只有少数例外,如果它适用于Greasemonkey,它可以通过设计适用于Tampermonkey。

至于问题代码,有很多问题:

  1. 这不是您为textpassword <input>元素设置值的方式。在jQuery中,您可以使用the .val() function进行设置。 EG:$("#fieldAccount").val("foo");
  2. 要求jQuery没有@grant指令。这将是bust the script, or bust the page or bust both
  3. @match指令与页面不匹配。 gaurdian不正确,页面使用guardian 您可以通过查看右上角的Tampermonkey图标来判断@match指令何时正确。如果该页面上的任何脚本处于活动状态,它将显示一个带有活动脚本数量的红色图标。
  4. @match指令与页面不匹配。匹配项指定https,但该站点不支持SSL(!!!)。您需要匹配不安全页面,因为它是唯一提供的页面,然后向站点所有者大喊以停止广播您的敏感信息。
  5. getElementById使用不当。此目标页面的$('input[type=password]').attr('id')undefined
  6. 在脚本文件中存储用户名和密码!这是书中最古老的错误和漏洞之一。如果你这样做,你只需要时间问题就可以了。

    在您将粗略的想法付诸实践之后,整合一份敏感信息&#34;脚本中的this one等框架。

  7. 不必要地使用jQuery(function($) {。在Greasemonkey或Tampermonkey脚本中通常不需要它,在这种情况下只是温和地混淆代码。
  8. 使用jQuery时使用getElementById document.getElementById("foo")$("#foo")相同,但后者更易于输入,读取和维护。是的,getElementById可能无限快,但是这么少,它永远不会成为你想要做的任何实际因素。
    jQuery方法也更加便携和可重用。

  9. 总而言之,这个完整的脚本将起作用:

    // ==UserScript==
    // @name        Powerschool Memory
    // @version     0.1
    // @description Makes PowerSchool remember your username and password.
    // @match       http://powerschool.avon.k12.ct.us/guardian/home.html
    // @match       https://powerschool.avon.k12.ct.us/guardian/home.html
    // @require     http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.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.
    */
    //-- If/when SSL becomes available, switch to only using the https pages.
    
    $("#fieldAccount").val ("username_here");
    $("#login-inputs input[name='pw']").val ("password_here");
    


    但是,请使用上面第6期中链接的框架。