How to get input from Chrome's Javascript cons

2020-02-23 06:58发布

Is there a way to programmatically get input from the Javascript Console of Google Chrome, similar to readline() in Firefox?

6条回答
Fickle 薄情
2楼-- · 2020-02-23 07:20

Sorry, doesn't work on Chrome JS Console, just works on the repl from repl.it

Example from repl.it:

console.log("Enter your name:");
console.read(function(name) {
  console.log('Your name is ' + name + '.');
});
查看更多
何必那么认真
3楼-- · 2020-02-23 07:22

You might need to incorporate jsh (Javascript Shell) in your environment if you are working with console IO. See http://code.google.com/p/jsh/ for the how-to. Hope this helps.

查看更多
家丑人穷心不美
4楼-- · 2020-02-23 07:24

This is an indirect method of taking inputs:

Declare a function in JavaScript:

function your_command_here()  {
    //code
}

As Chrome's console basically provides methods for communicating with the page's contents, like JavaScript variables, functions, etc., so declaring a function as a receivable command can be an option.

In the console, for providing input, the user shall type:
your_command_here()

Another workaround is:
Declare a function:

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

So the user can (more conveniently) type:
command("user's command here")

查看更多
戒情不戒烟
5楼-- · 2020-02-23 07:28

We can do is hook the console.log so whenever it logs something we can access, otherwise there is no such direct method as like in firefox which does this possible for us in a simple single line code.

var tempStore = [];
var oldLog = console.log;

console.log = function() {
    tempStore.push(arguments);
    oldLog.apply(console, arguments);
}
查看更多
老娘就宠你
6楼-- · 2020-02-23 07:34

A tricky way to do this is assigning a getter to a property of a window object

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

So when you type "customCommand" (without parenthesis) it will print your console.log text to the console while the console is "getting" the variable.

You will still have to return something though, and I'm not sure how you could change the order so that the value is returned first and the text in the console appears second. It's definitely possible though, I've seen this happen.

查看更多
虎瘦雄心在
7楼-- · 2020-02-23 07:38

Here is a solution to input from the console. Try this out!!

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

查看更多
登录 后发表回答