我是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。
至于问题代码,有很多问题:
这不是设置text
和password
<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期中链接的框架。