我是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变量获得的

你们能帮我看看我的错误在哪里,也许更重要的是,我正在做什么以弄乱它?

最佳答案

有关教程和问题,您可以搜索Greasemonkey主题。除少数例外,如果它适用于Greasemonkey,则设计上也适用于Tampermonkey。

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


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

在您实现粗略想法之后,将this one之类的“敏感信息”框架整合到脚本中。
不必要地使用jQuery(function($) {。通常在Greasemonkey或Tampermonkey脚本中不需要它,只是在这种情况下稍微混淆了代码。
使用jQuery时使用getElementById
document.getElementById("foo")$("#foo")相同,但是后者更易于键入,读取和维护。的确,getElementById可能无限快,但是数量如此之小,以至于它绝不会成为您尝试做的任何实际操作的因素。
jQuery方法也更加可移植和可重用。



放在一起,这个完整的脚本将起作用:

// ==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期中链接的框架。

09-27 05:05