2014-10-31 33 views
0

这只是waaay太过我的头。我可以知道每个开始和结束的位置,但逗号后的所有额外内容都会让我感到困惑。 我有下面的代码我试图修改到另一个查询部分添加到:试图嵌入,如果内部其他如果的

if (typeof ShellInABox == "function") { 
    clearInterval(window.loginInterval); 
    window.shell = new ShellInABox(); 
    if (getQueryVariable("u")){ 
     setTimeout(function(){ 
     enterWord(getQueryVariable("u")) 
     if (getQueryVariable("p")){ 
      setTimeout(function(){ 
       enterWord(getQueryVariable("p")); 
       window.autologinpassword=""; 
      },getQueryVariable("d") || 2000); 
     } 
     }, 2000); 
    } 
    } 

我需要添加另一部分如..

if (getQueryVariable("c")){ 
    setTimeout(function(){ 
    enterWord(getQueryVariable("c")) 

..after密码被发送。但我尝试的每一种方式都不起作用。我正在改变它,zip,scp,解压缩,重新编译/ make/install,然后测试。一直把我的头撞在桌子上2个小时。找不到为什么在其中一个enterWord部分后面有分号,但另一个没有。请帮助。

+1

不清楚为什么所有这些超时是必要的?顺便说一句,第一个'enterWord'也可以有一个';'(我会把它),但有或没有不应该改变任何东西。 – plalx 2014-10-31 22:23:16

+0

如果'getQueryVariable()'返回一个数值为0或任何falsey的'if(){}'语句失败。我无法知道您的代码正在做什么,或者您的目标是什么,为我们提供了什么。 – PHPglue 2014-10-31 22:27:53

+0

我正在使用来自github的shellinabox的副本代码。关键是要能够通过192.168.1.5/?u=user1&p=mypass才能够自动登录到这个shell。 u和p选项被添加到这个分支中,并且据我所知,这是相关的代码,我可以添加另一个选项,如u和p,称为c,它将在第一个2之后运行。我已经测试过代码是这样的,它工作正常。我相信超时是因为这是基本上在网页中嵌入bash shell,并且取决于连接速度,可能需要在传递用户和传递 – cashman04 2014-10-31 22:30:50

回答

1

试试这个:

  1. 单击线的末端if语句的结束之前,和之前设置超时通话。
  2. 为每一个输入或返回,以使代码更易于理解。

祝你好运。

+0

之间暂停。这有所帮助。我向前走了一步,然后逐段删除了我不明白的部分,它们是setTimeouts。 – cashman04 2014-10-31 22:51:30

1

我终于得到它只是剥离了这一切袒露if语句多次后:

if (getQueryVariable("u")){ 
      setTimeout(function(){ 
      enterWord(getQueryVariable("u")) 
      if (getQueryVariable("p")){ 
       setTimeout(function(){ 
        enterWord(getQueryVariable("p")); 
        if (getQueryVariable("c")){ 
        enterWord(getQueryVariable("c")); 
        } 
       }, 2000); 
      } 
      }, 2000); 
     } 

什么拧我是||在其中一个中间。本节的逻辑是这样的:

如果指定了一个选项,请将超时设置为2秒,然后运行值为u的函数enterWord。如果有选项p,请设置超时2秒或选项d的值,然后运行enterWord。在对此进行了30次左右的修改之后,我终于在将它拆分为基本功能之后得到了工作,然后找出了为什么需要超时以及如何添加它们。时间去喝几杯。