使用jquery或javascript运行浏览器工具栏按钮

时间:2019-02-07 11:55:22

标签: javascript jquery google-chrome-extension

我添加了一个名为“外部应用程序按钮”的Chrome扩展程序。

它的作用是我们可以将外部应用程序(例如sublime.exe,vscode.exe等)添加到我们的浏览器工具栏,然后单击以打开exe。

因此,使用jquery或javascript可以使按钮单击发生吗?

我的主要目标是使该应用程序使用网页中的jquery或javascript代码运行。

1 个答案:

答案 0 :(得分:1)

  1. 对于扩展程序和网页而言,如果不安装额外的软件,就不可能独自完成。您在代码中可以在计算机上完成的工作被“沙盒化”,并且仅限于浏览器提供的任何API。

  2. 要调用浏览器外部的应用程序,扩展程序需要使用称为Native Host的东西。这就是为什么需要额外安装一些东西才能使该扩展正常工作的原因。

    常规网页无法使用本机主机,因此该路由已关闭。

  3. 如果我们允许安装扩展程序,我们可以从网页代码中做到这一点吗?

    是的,与网页对话的扩展程序(通过内容脚本或externally_connectable机制)可以允许网站触发扩展程序代码,从而触发本机主机代码,并执行您想要的操作。

    您不能使用任意第三方扩展来做到这一点,因此您需要编写自己的扩展。

  4. 如果我们允许安装额外的组件,您是否可以在没有扩展的情况下进行操作?

    原则上是。一种典型的方法是安装一个帮助程序,该程序在本地端口上打开一个Web服务器,例如localhost:12345。然后,任何JavaScript上下文都可以尝试连接到它。

    实际上,有并发症。

    • 如何从任意连接保护本地服务器?您需要一些预共享的机密,以不允许其他站点或本地计算机上的其他软件滥用此密码。

    • 从HTTPS网站连接到非HTTPS域是一个问题。为localhost制作一个受浏览器信任的证书也是一个问题(如果被规避,则会带来安全隐患)。这会使额外组件的安装复杂化。

  5. 另一个想法:您的额外组件可以将自己注册为协议处理程序。例如,您可以添加launch-app:协议,并告诉系统需要调用您的助手应用程序。示例:Steam使用这种方法通过浏览器与其客户端进行通信(例如,安装/启动游戏)。

    请注意,这是单向通信,但是对于“启动程序”用例来说就足够了。

    然后,您只需提供指向该特殊协议的链接即可。同样,这需要在目标系统中安装额外的组件。您不能仅使用浏览器来做到这一点。

因此,总的答案是:它很复杂,并且需要额外的软件安装。

相关问题