JavaScript事件未触发

时间:2013-07-12 19:41:25

标签: javascript events

所以我最近决定开始学习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();
}

3 个答案:

答案 0 :(得分:3)

您需要更正比较以使用两个等号。

if (location.href == 'http://www.scrap.tf/hats')
{
    EnQueueHatBank();
}

一旦你得到像jslint这样的工具,javascript甚至提供了一个===运算符,它也会进行类型检查(检查双方是否是字符串,如本例所示)。

答案 1 :(得分:2)

我认为===的谈话忽视了这一点。您在调用window.location 之前更改了EnQueueHatBank ,因此您需要在调用该函数之前导航到新页面。这就是阻止它运行的原因。所以你需要做的第一件事就是:

  1. 首先调用EnQueueHatBank。

    if (location.href === 'http://www.scrap.tf/hats') {
        EnQueueHatBank();
    } else {
        EnQueueHatBank();
        window.location.href='http://www.scrap.tf/hats';
    }
    
  2. 稍微清理一下代码,因为结构有点尴尬。你以任何一种方式调用EnQueueHatBank,因此不需要它在if语句中:

    EnQueueHatBank();
    
    if (window.location.href !== 'http://www.scrap.tf/hats') {
        window.location.href = 'http://www.scrap.tf/hats';
    }
    
  3. 最后,请记住,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';
    }
    
  4. 编辑:根据您的评论,您需要执行以下操作:

    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();
}