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

标签 javascript jquery google-chrome-extension

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

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

那么使用 jquery 或 javascript 是否有可能使按钮点击发生?

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

最佳答案

  1. 对于扩展程序和网页来说,如果不安装额外的软件,就不可能单独完成。您可以通过代码在计算机上执行的操作处于“沙盒”状态,并且受限于浏览器提供的任何 API。

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

    常规网页不能使用 native 主机,因此该路由已关闭。

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

    是的,与网页对话的扩展程序(通过内容脚本或 externally_connectable 机制)可以允许网站触发扩展程序代码,触发本地主机代码,做你想做的事。

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

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

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

    在实践中,会出现并发症。

    • 如何保护本地服务器免受任意连接的侵害?您需要一些预先共享的 secret ,以防止其他站点或本地计算机上的其他软件滥用它。

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

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

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

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

所以总体答案是:它很复杂,需要额外安装软件。

关于javascript - 使用 jquery 或 javascript 运行浏览器工具栏按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54572814/

相关文章:

javascript - Emberjs 应用程序刷新索引以外的路由会出现 404 错误

javascript - 第二个相关下拉列表未填充数据

jquery - jQuery 的多个动画

google-chrome - 如何禁止chrome打开 "new window"和 "tabs"?

javascript - 当第 3 方 Cookie 和/或站点数据被禁用时,Chrome 扩展程序无法访问 localStorage

javascript - 为什么在编译包含指令的 html 文本(来自 db)时出现无限摘要错误

javascript - 单击按钮时的调用功能不起作用

javascript - 我有下面的代码 - 在 IE 和 Opera 中工作得很好,但在 Firefox/Netscape 中根本不起作用。有任何想法吗?

jquery - 跨越容器宽度的重叠内联元素

google-chrome-extension - 避免重新加载 Google Chrome 扩展程序