如何从 Chrome 的 Javascript 控制台获取输入?

Posted

技术标签:

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

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

【问题讨论】:

您可以在控制台中输入您要评估的代码,它会立即被评估。例如,尝试在控制台中输入alert("Hello World!");。这不是您问题的完整答案,但它是一个很好的起点。 【参考方案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

javascriptnode.jsjqueryconsoleweb

【讨论】:

以上是关于如何从 Chrome 的 Javascript 控制台获取输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 javascript 从网页中删除 HTML 元素? (尝试做一个chrome扩展)

如何从JavaScript中引用属于Chrome扩展程序的文件

收集控 | 国内Chrome扩展下载网站汇总

如何使用 JavaScript 创建 Chrome 扩展来隐藏或删除页面元素?

如何从 Chrome 复制 cookie?

从 Chrome 远程调试协议访问 JavaScript 变量