1

私のページにはjQuery.terminalが埋め込まれており、入力することでコマンドを送信できます。作業中のスクリプト内に多数の console.log および console.dir コマンドがあります。ターミナルにもそれらを出力させたいのですが、出力しません。

私はそれがこのSOの質問の人たちがしたことのようなものかもしれないと思っていました; console.log を上書きすることにより:

Web サイトに JS コンソールを埋め込む

jQuery.terminal でこのようなことをしたいと思います

console.log=function(str){term.echo(str);};

それがどのように機能すると思われるかわかりません。Chromesコンソールからターミナルにアクセスできないため(エコーを行う部分が見つかりません)。

var log;

$('#term').terminal(function(command,term){
    if(command!==''){
        try{
            var result=window.eval(command);
            if(result!==undefined){
                term.echo(new String(result));
                }}
        catch(e){
            term.error(new String(e));
            }}
    else{
        term.echo('');
        }},{
    welcome:false,
    height:200,
    prompt:'> ',
    onInit:function(term){
        log=term;                 // now log should reference to term
        alert('hello');           // I don't see this alert
        }});

console.log('hello');     //only the browsers own console shows this message

次に、Chrome コンソールに手動で入力すると、次のようになります。

log.echo('hi'); // Cannot read property 'echo' of undefined

$.terminal オブジェクトがあるようですが、このイーサからエコーにアクセスする方法がわかりません。これを適切に行うにはどうすればよいですか、それとも開発者がこれを行うために設定した定義された方法がありますか? コンマ区切りのログや dir オブジェクトを台無しにしたくありません。

4

1 に答える 1

0

プラグインは端末インスタンスを返すので、次のようにする必要があります。

var term = $('#term').terminal(function(command,term) {
 ...
}, {...});

console.log = function(str){ term.echo(str); };

また、現在の端末にアクセスしたい場合は、次を使用できます。

var term = $.terminal.active();
于 2015-02-12T15:17:32.753 に答える