2011-11-10 51 views
7

运行在桌面上的Node.js是否可以生成Chrome浏览器窗口?我想在Node.js接收事件时启动一个提供窗口大小和位置的Chrome浏览器。Node.js可以调用Chrome吗?

sys shell命令是唯一的方法吗?

+1

您想在哪个操作系统上启动Chrome? –

回答

-3
var exec = require('child_process').exec 

exec('open firefox www.google.pt' , function(err) { 
if(err){ //process error 
} 

else{ console.log("success open") 
} 

}) 

这将打开火狐在谷歌网页从的NodeJS脚本,铬应该是相同的

+1

什么是“开放”命令?这是OSX吗? –

+1

'open chrome'在我的Mac OSX 10.8.2上没有做任何事情(显然安装了Chrome) –

+0

不适用于Chrome浏览器! – Adaptabi

0

是的,我想你会需要逃离壳然后打开铬。

0

节点只能调用UNIX/Windows命令,因此只能使用sys shell命令。

5

我打开窗户一新的Firefox标签浏览: https://github.com/Sequoia/FTWin/blob/master/FTWin.n.js

最显着的部分:

var cp = require('child_process'), 
    url_to_open = 'http://duckduckgo.com/'; 

cp.spawn('c:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe', ['-new-tab', url_to_open]); 

注:

  1. 跑过完整路径的Firefox到child_process.spawn
  2. 斜线的逃逸
  3. 传交换机/参数firefox.exe:作为cp.spawn的按开关的阵列(一个条目的第二个参数传递)。

这个调用相当于在Windows命令行键入"c:\Program Files (x86)\Mozilla Firefox\firefox.exe" -new-tab http://duckduckgo.com

对于铬,你想要的东西就像D:\Users\sequoia\AppData\Local\Google\Chrome\Application\chrome.exe --new-tab http://duckduckgo.com/我会让你的工作你自己的child_process版本;)

参考文献:

http://peter.sh/experiments/chromium-command-line-switches/

http://nodejs.org/docs/v0.3.1/api/child_processes.html

+0

要启动Chrome浏览器与Windows中的选项我试过, 'cp.spawn('c:\\ Program Files(x86)\\ Google \\ Chrome \\ Application \\ chrome.exe',['--user-data-dir ','C:\ chrome-path']'看起来'C:\ chrome-path'在这种情况下被认为是url。任何想法都可以解决这个问题?谢谢! – Prasad19sara

+0

尝试'['--user-data-dir = C:\ chrome-path']'?或者换成'['--user-data-dir',''C:\ chrome-path'']'或者尝试转义斜线'['--user -data-dir','C:\\ chrome-path']'祝好运! –

4

随着opn

const opn = require('opn'); 
opn('http://siteurl.com/', {app: ['google chrome']}); 
0

结帐https://www.npmjs.com/package/chrome-launcher

启动Chrome浏览器:

const chromeLauncher = require('chrome-launcher'); 

chromeLauncher.launch({ 
    startingUrl: 'https://google.com' 
}).then(chrome => { 
    console.log(`Chrome debugging port running on ${chrome.port}`); 
}); 

启动无头铬:

const chromeLauncher = require('chrome-launcher'); 

chromeLauncher.launch({ 
    startingUrl: 'https://google.com', 
    chromeFlags: ['--headless', '--disable-gpu'] 
}).then(chrome => { 
    console.log(`Chrome debugging port running on ${chrome.port}`); 
}); 

铬发射器打开一个远程调试端口,因此你也可以使用DevTools protocol控制浏览器实例。

Puppeteer是另一种启动Chrome并使用高级API与其交互的方式。

相关问题