【问题标题】:How to get input from Chrome's Javascript console?如何从 Chrome 的 Javascript 控制台获取输入?
【发布时间】:2012-01-08 02:52:03
【问题描述】:

有没有办法以编程方式从 Google Chrome 的 Javascript 控制台获取输入,类似于 Firefox 中的readline()

【问题讨论】:

  • 您可以在控制台中输入您要评估的代码,它会立即被评估。例如,尝试在控制台中输入alert("Hello World!");。这不是您问题的完整答案,但它是一个很好的起点。

标签: javascript jquery google-chrome console web


【解决方案1】:

这是一种获取输入的间接方法:

在 JavaScript 中声明一个函数:

function your_command_here()  {
    //code
}

由于 Chrome 的控制台基本上提供了与页面内容通信的方法,例如 JavaScript 变量、函数等,因此可以选择将函数声明为可接收命令。

在控制台中,为了提供输入,用户应键入:
your_command_here()

另一种解决方法是:
声明一个函数:

function command(var cmnd)  {
    switch(cmnd)  {
        case "command1":
            //code
        break;
    }
}

所以用户可以(更方便地)输入:
command("这里是用户的命令")

【讨论】:

  • 我太傻了,我自己都没意识到command("user's command here") 有多酷。谢谢你的指导!
【解决方案2】:

一个棘手的方法是将一个 getter 分配给一个窗口对象的属性

Object.defineProperty(window, 'customCommand', {
  get: function() {
    console.log("hey");
    return "hey";
  }
});

因此,当您键入“customCommand”(不带括号)时,它会在控制台“获取”变量时将您的 console.log 文本打印到控制台。

尽管如此,您仍然需要返回一些东西,而且我不确定您如何更改顺序,以便首先返回值,然后显示控制台中的文本。不过这绝对是可能的,我已经看到了这种情况。

【讨论】:

    【解决方案3】:

    我们可以做的是挂钩console.log,这样每当它记录我们可以访问的东西时,就没有像firefox那样直接的方法,它可以用简单的单行代码为我们做到这一点。

    var tempStore = [];
    var oldLog = console.log;
    
    console.log = function() {
        tempStore.push(arguments);
        oldLog.apply(console, arguments);
    }
    

    【讨论】:

      【解决方案4】:

      如果您使用控制台 IO,您可能需要在您的环境中加入 jsh(Javascript Shell)。有关操作方法,请参阅http://code.google.com/p/jsh/。希望这会有所帮助。

      【讨论】:

        【解决方案5】:

        抱歉,不能在 Chrome JS 控制台上工作,只能在 repl.it 的 repl 上工作

        repl.it 中的示例:

        console.log("Enter your name:");
        console.read(function(name) {
          console.log('Your name is ' + name + '.');
        });
        

        【讨论】:

          【解决方案6】:

          这是从控制台输入的解决方案。 试试这个!!

          process.stdin.resume();
          process.stdin.setEncoding('ascii');
          
          var stdInput = ""; 
          var stdInputArr = "";
          var index = 0;
          
          process.stdin.on('data', function (data) {
              stdInput  += data;
          });
          
          process.stdin.on('end', function () {
              stdInputArr  = stdInput.split("\n");
              main();    
          });
          
          // Reads complete line from STDIN
          function readLine() {
              return stdInputArr[index++];
          }
          //call this function in the main function
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-08
            • 2013-11-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多