2013-03-30 28 views
1

我正在嘗試使用:http://terminal.jcubic.pl/從另一個函數JQuery終端term.echo?

我想能夠從另一個函數調用term.echo,以便能夠在終端中放置數據,但我無法引用它。

繼承人代碼如下:

jQuery(document).ready(function($) { 
    var id = 1; 
    $('body').terminal(function(command, term) { 
     if (command == 'help') { 
      term.echo("available commands are mysql, js, test"); 
     } else{ 
      term.echo("entered: " + command); 
     } 

    }, { 
     greetings: "Shell", 
     onBlur: function() { 
      return false; 
     } 
    }); 
}); 

如何訪問term.echo外部,所以從我可以像一個按鈕,點擊通話term.echo中添加數據?

回答

1

最簡單的方法是使用全局變量作爲術語對象的參考。在您的例子,可以看起來像如下:

// global placeholder for term object 
var terminal = null; 

jQuery(document).ready(function($) { 
    var id = 1; 
    $('body').terminal(function(command, term) { 

     // setting up global reference 
     terminal = term; 

     if (command == 'help') { 
      term.echo("available commands are mysql, js, test"); 
     } else{ 
      term.echo("entered: " + command); 
     } 

    }, { 
     greetings: "Shell", 
     onBlur: function() { 
      return false; 
     } 
    }); 
}); 

這段代碼的問題是,準備事件後文件開除將加載終端和你永遠不能肯定當這種情況發生。

在document.ready解僱後,您將能夠在任何地方使用terminal.echo('');

0

終端返回的值是相同的對象,如interpter參數(在這兩種情況下是附加終端方法jQuery對象),這樣你就可以做這樣的事情:

jQuery(function($) { 
    var terminal = $('body').terminal(function(command, term) { 
     if (command == 'help') { 
      term.echo("available commands are mysql, js, test"); 
     } else{ 
      term.echo("entered: " + command); 
     } 

    }, { 
     greetings: "Shell", 
     onBlur: function() { 
      return false; 
     } 
    }); 

    terminal.echo("Some text"); 
}); 
+0

我可以只發送字符與回聲()?它在我的文本後添加一個新行。我不想那樣! –

+0

@ 0xFEEDC0DE你不能,echo總會在最後添加新行。 – jcubic

+0

我不想在每個回聲後添加新行。是否有另一個功能來做到這一點? –

相關問題