我是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变量来获得的
你能帮助我看看我的错误在哪里,也许更重要的是,我正在做些什么来搞砸它?
答案 0 :(得分:2)
对于教程和问题,您可以搜索Greasemonkey主题。只有少数例外,如果它适用于Greasemonkey,它可以通过设计适用于Tampermonkey。
至于问题代码,有很多问题:
text
和password
<input>
元素设置值的方式。在jQuery中,您可以使用the .val()
function进行设置。 EG:$("#fieldAccount").val("foo");
@grant
指令。这将是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
。在脚本文件中存储用户名和密码!这是书中最古老的错误和漏洞之一。如果你这样做,你只需要时间问题就可以了。
在您将粗略的想法付诸实践之后,整合一份敏感信息&#34;脚本中的this one等框架。
jQuery(function($) {
。在Greasemonkey或Tampermonkey脚本中通常不需要它,在这种情况下只是温和地混淆代码。getElementById
document.getElementById("foo")
与$("#foo")
相同,但后者更易于输入,读取和维护。是的,getElementById
可能无限快,但是这么少,它永远不会成为你想要做的任何实际因素。
总而言之,这个完整的脚本将起作用:
// ==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期中链接的框架。