【问题标题】:Start a background process with javascript使用 javascript 启动后台进程
【发布时间】:2013-09-03 10:15:23
【问题描述】:

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

  1. 只要我打开 Google Plus,它就会在后台启动 googletalkplugin.exe(来自文件夹 C:\Users\Jatin\AppData\Local\Google\Google Talk Plugin)。 (可以在资源监视器中查看)
  2. Facebook 视频聊天也是如此。第一次,它要求我安装一个插件,然后当我开始聊天时,它会启动一个进程。
  3. 在种子网站上,它们提供磁力链接。单击 torrent 磁力链接,它会打开我的系统默认 torrent 客户端。

在某种程度上,flash 和小程序也是如此。

浏览器如何触发另一个进程并与之通信?有没有我遗漏的开放标准?

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

【问题讨论】:

标签: javascript browser


【解决方案1】:

flash 播放器和小程序使用插件,它们是操作系统的本机应用程序(即(主要)不是 JavaScript),它们不是扩展程序而是插件。对于 Chrome,请参阅 chrome://plugins/ 以查看已安装插件的列表。

浏览器插件的编写,参考How to write a browser plugin?

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

当浏览器看到 uri 时,它知道它本身没有处理torrent 协议,因此它将它委托给知道如何处理它的操作系统。

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

【讨论】:

    【解决方案2】:

    您可以通过编写插件来做到这一点。可以编写适用于大多数流行浏览器的插件,使用相同的 C++ 代码,使用名为 Firebreath 的库

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

    您必须编写一个特定的插件,其功能严格限制在您需要的范围内,以便用户同意让您仅使用这些功能。再一次,在沿着这条路线走之前,想想另一个页面如何利用这些功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多