使用javascript启动后台进程

时间:2013-09-03 10:15:23

标签: javascript browser

一般来说,我知道无法通过浏览器中的javascript调用系统库或dll。但在许多应用程序中,我看到浏览器启动其他进程。例如:

  1. 只要我打开Goog​​le Plus,它就会在后台启动googletalkplugin.exe(来自文件夹C:\Users\Jatin\AppData\Local\Google\Google Talk Plugin)。 (可在资源监视器中查看)
  2. 与facebook视频聊天相同。这是第一次,它要求我安装一个插件,稍后当我开始聊天时,它会启动一个过程。
  3. 在torrent网站上,他们提供磁力链接。点击torrent磁力链接,它会打开我的系统默认torrent客户端。
  4. 在某种程度上,与flash和applet相同。

    浏览器如何触发另一个进程并与之通信?我缺少任何开放标准吗?

    最终我希望通过截屏视频进行视频,录音。对于屏幕录制,Java applet看起来是唯一的解决方案,但applet有自己的问题。

2 个答案:

答案 0 :(得分:3)

Flash播放器和applet使用插件,这些插件是操作系统的本机应用程序(即(大多数情况下)不是JavaScript),它们不是插件而是插件。对于Chrome,请参阅chrome:// plugins /以查看已安装插件的列表。

有关编写浏览器插件的信息,请参阅How to write a browser plugin?

torrent链接完全不同,它们是通过注册url协议来完成的。换句话说,你对计算机说,从现在开始,,我将运行任何具有torrent协议的URL,即:以torrent:// 开头。请参阅:Uri Scheme

当浏览器看到uri时,它知道它没有处理torrent协议本身,所以它将它委托给OS,它知道如何处理它。

如果浏览器确实知道如何处理它,它可能不会将其委托给操作系统。例如:Google Chrome可以很好地处理mailto:链接,而无需注册要由操作系统处理的mailto协议。

答案 1 :(得分:2)

您可以通过编写插件来完成此操作。使用名为Firebreath

的库,可以使用相同的C ++代码编写适用于大多数流行浏览器的插件。

当然,没有预先存在的标准插件允许页面启动任何外部应用程序,因为这将是一个巨大的安全漏洞,没有(理智)用户会同意安装这样的插件

您必须编写一个特定的插件,其功能仅限于您所需的功能,因此用户可以同意让您仅使用这些功能。再次考虑另一个页面如何在沿着这条路线前利用这些功能。