9

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

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

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

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

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

4

2 回答 2

3

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

关于编写浏览器插件,请参阅如何编写浏览器插件?

种子链接完全不同,它们是通过注册一个url协议来处理的。换句话说,你对计算机说,从现在开始,我将运行任何协议为 的 url torrent,即:以 . 开头torrent://。请参阅:Uri 方案

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

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

于 2013-09-03T10:29:17.827 回答
2

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

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

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

于 2013-09-03T10:25:31.883 回答