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 回答