1

私は使用しようとしています:http://terminal.jcubic.pl/

別の関数から 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 を呼び出してデータを追加できますか?

4

2 に答える 2

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;
        }
    });
});

このコードの問題は、readyイベントがドキュメントで発生した後に端末をロードすることであり、それがいつ発生するかはわかりません。

document.ready が起動すると、terminal.echo('');どこでも使用できるようになります。

于 2013-03-30T10:46:49.377 に答える
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");
});
于 2013-12-11T11:40:08.067 に答える