JavaScript事件未触发

JavaScript事件未触发,javascript,events,Javascript,Events,所以我最近决定开始学习JavaScript。我只知道VB.NET的编程知识和HTML&CSS的设计。无论如何,scrape.tf是TF2银行业务的一个网站,它使事情变得自动化。我计划写一个基本的Chrome插件,我希望能够在点击按钮的情况下实现这个功能。我已经把这些都设置好了,但是当点击按钮时,我只需要报废。tf/hats,EnQueueHatBank();是他们用来加入队列的JS命令。除非我在网站上输入它,否则它甚至不会启动。我需要等它开火吗 if (location.href === 'ht

所以我最近决定开始学习JavaScript。我只知道VB.NET的编程知识和HTML&CSS的设计。无论如何,scrape.tf是TF2银行业务的一个网站,它使事情变得自动化。我计划写一个基本的Chrome插件,我希望能够在点击按钮的情况下实现这个功能。我已经把这些都设置好了,但是当点击按钮时,我只需要报废。tf/hats,EnQueueHatBank();是他们用来加入队列的JS命令。除非我在网站上输入它,否则它甚至不会启动。我需要等它开火吗

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

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

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

一旦您使用了jslint之类的工具,javascript甚至提供了一个
==
操作符,它也进行类型检查(检查两边是否都是字符串,如本例所示)。

您应该使用比较
===
操作,但您进行了值赋值
=

if (location.href === 'http://www.scrap.tf/hats')
{
    EnQueueHatBank();
}
else
{
    window.location.href='http://www.scrap.tf/hats';
    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
    后再次运行时,这才有效,因此请确保每次加载新页面时都会运行该程序


    出于安全原因,您不能在一个页面上启动代码,并在导航到其他地方后让它继续。你必须从它要运行的页面调用
    排队银行

    =
    是一个分配
    =
    是一个比较。尝试
    =
    而不是
    =
    它仍然会将我重定向到该页面,即使我在上面(if和else部分的函数相同。是否有任何错误?@TylerDunn太好了!可以共享修复程序吗?将www.从中删除,它将不再重定向。我现在的问题是,如果它不在页面上,在重定向后,EnQueueHatBank()不会被激发。@TylerDunn最好这样做
    if。)(window.location.href!=='http://www.scrap.tf/hats“){window.location.href=”http://www.scrap.tf/hats“;}EnQueueHatBank();
    问题是,在使用该命令之前,它应该在该页面上,因为如果不在该页面上,EnQueueHatBank()没有任何意义。@TylerDunn在这种情况下,用条件检查下面的函数尝试他的第二个解决方案,看看结果是否不同。结果不一样。在激发EnQueueHatBank()之前,它需要在scrap.tf/hats上。修复了我的问题,它没有重定向,我现在的问题是一旦重定向,EnQueueHatBank()是否有办法将EnQueueHatBank作为一个单独的函数,并让它在其他情况下执行该函数,或者仍然考虑继续代码?