将Javascript代码发送到浏览器

将Javascript代码发送到浏览器,javascript,browser,command-line,Javascript,Browser,Command Line,有没有一种方法可以从shell向在浏览器中运行的开放web发送javascript命令 比如说我用Chrome打开了stackoverflow.com。嗯,我想寄一些像 alert('hi!'); 从shell中,使用类似于以下内容的内容: $ send -t Chrome -w "stackoverflow.com" -c "alert('hi!')" 我想知道这一点,因为如果我可以在Chrome的javascript控制台上编写alert('hi!'),我应该可以在某个地方调用它,对吗

有没有一种方法可以从shell向在浏览器中运行的开放web发送javascript命令

比如说我用Chrome打开了stackoverflow.com。嗯,我想寄一些像

alert('hi!');
从shell中,使用类似于以下内容的内容:

$ send -t Chrome -w "stackoverflow.com" -c "alert('hi!')"
我想知道这一点,因为如果我可以在Chrome的javascript控制台上编写alert('hi!'),我应该可以在某个地方调用它,对吗

我看过node.js,但我认为这是不可能的,如果我错了,请告诉我


我知道这个问题可能看起来很奇怪,但我很好奇,提前谢谢:)

我认为如果你编写并安装一些浏览器插件来接收你的信号,并完成这项工作,这是可能的。有趣的问题,我会跟踪它。

提供这种功能完全取决于浏览器。事实上,问题的形式甚至不特定于浏览器:

我想知道这一点,因为如果我能[提供某种输入]给[一个程序]让它[做点什么],我应该能够在某个地方用电话做同样的事情,对吗

有些程序确实为脚本编写提供了钩子,但如果它们不提供钩子,那你就倒霉了。如果您可以通过GUI执行某些操作,那么您就可以通过命令行调用触发相同的操作,这当然不能保证

现在,大多数浏览器都提供了某种插件体系结构,如果基本产品中缺少此功能,那么很可能存在这样一个插件,它将以这种方式侦听外部输入


但是,这对于您想要控制的浏览器的特定型号甚至版本来说仍然是非常具体的,因此,如果您想将其发布到野外,您需要非常具体地满足您的要求。

对于IE,您似乎可以使用好的旧VBScript:

现在在IE8上对我很好。:)

编辑:要打开此问题并提醒JS值,请将此代码作为
.vbs
文件并运行它:

Dim oIE

Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = 1

oIE.Navigate "http://stackoverflow.com/questions/4992552/send-javascript-code-to-browser/4992812"

Do While (oIE.Busy)
   Wscript.Sleep 10
Loop

oIE.Navigate "javascript:alert(fkey);"

您可以通过jssh扩展向Firefox发送JavaScript

这就是Watir测试框架用来自动化Firefox的内容


我不知道Chrome是否有类似的浏览器。

您可以通过地址栏向浏览器发送任意代码!例如,在自动热键样式中

send F6 //focus the address bar
send ctrl+v  //given that your code is in clipboard
send enter
现在还有一个问题。我们能得到注入代码的返回值吗?答案是肯定的

将返回值指定给
document.title
,并从应用程序中检索窗口标题

如果返回值太长(例如JSON格式的字符串),请执行以下操作

document.title='calculating...';
document.title=returnValue.subString(0,20);
sleep(10);
document.title=returnValue.subString(20,40);
sleep(10);
document.title=returnValue.subString(40,60);
...
document.title='finished';

希望它能工作。

我知道,我只是想知道是否有任何现代浏览器可以提供这样的功能,我不是问是否有一个程序可以管理所有这些功能:)@Jos好吧,Chrome是开源的,所以你可以深入了解它的源代码,看看当用户键入
javascript:alert('hi!')时会发生什么:)@我正在做一些研究,但我想在这里得到一些帮助;)感谢您的评论。Watir使用为特定浏览器创建的各种WebDriver wire实现。(例如chrome驱动程序)不是SSH仿真。