所以我最近决定开始学习JavaScript。我来自于只知道VB.NET的编程知识和HTML&用于设计的CSS。无论如何,scrap.tf是一个TF2银行的网站,它使事情自动化。我打算编写一个基本的Chrome插件,我希望能够在单击按钮的情况下执行此功能。我已经完成了这一切设置但是当点击按钮时,它只需要我去scrap.tf/hats,EnQueueHatBank();是他们在那里用来加入队列的JS命令。除非我在网站上输入后,否则这甚至不会触发。我需要等待它开火吗?
if (location.href === 'http://scrap.tf/hats')
{
EnQueueHatBank();
}
else
{
window.location.href='http://scrap.tf/hats';
EnQueueHatBank();
}
答案 0 :(得分:3)
您需要更正比较以使用两个等号。
if (location.href == 'http://www.scrap.tf/hats')
{
EnQueueHatBank();
}
一旦你得到像jslint这样的工具,javascript甚至提供了一个===
运算符,它也会进行类型检查(检查双方是否是字符串,如本例所示)。
答案 1 :(得分:2)
我认为=
与==
的谈话忽视了这一点。您在调用window.location
之前更改了EnQueueHatBank
,因此您需要在调用该函数之前导航到新页面。这就是阻止它运行的原因。所以你需要做的第一件事就是:
首先调用EnQueueHatBank。
if (location.href === 'http://www.scrap.tf/hats') {
EnQueueHatBank();
} else {
EnQueueHatBank();
window.location.href='http://www.scrap.tf/hats';
}
稍微清理一下代码,因为结构有点尴尬。你以任何一种方式调用EnQueueHatBank
,因此不需要它在if语句中:
EnQueueHatBank();
if (window.location.href !== 'http://www.scrap.tf/hats') {
window.location.href = 'http://www.scrap.tf/hats';
}
最后,请记住,http://www.scrap.tf/hats/
可能与http://www.scrap.tf/hats
位于同一位置,更不用说https://www.scrap.tf/hats?foo=bar
等等。通过不太严格的测试你会更好:
EnQueueHatBank();
if (window.location.href.indexOf('://www.scrap.tf/hats') > -1) {
window.location.href = 'http://www.scrap.tf/hats';
}
编辑:根据您的评论,您需要执行以下操作:
if (window.location.href.indexOf('://www.scrap.tf/hats') > -1) {
EnQueueHatBank();
}
else {
window.location.href = 'http://www.scrap.tf/hats';
}
仅当您的程序导航到scrap.tf/hats
后再次运行时,此功能才有效,因此请确保每次加载新页面时都会运行该程序。
出于安全原因,您无法在一个页面上启动代码,并在导航到其他位置后继续执行。您必须从要运行的页面中调用EnQueueHatBank
。
答案 2 :(得分:1)
您应该使用比较===
操作,但您执行了值=
。
if (location.href === 'http://www.scrap.tf/hats')
{
EnQueueHatBank();
}
else
{
window.location.href='http://www.scrap.tf/hats';
EnQueueHatBank();
}