2014-10-31 34 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次左右的修改之後,我終於在將它拆分爲基本功能之後得到了工作,然後找出了爲什麼需要超時以及如何添加它們。時間去喝幾杯。