【问题标题】:Browser Extension the "Injected way" a cross-browser extension that include a JS from a distant server浏览器扩展“注入方式”一个跨浏览器扩展,包括来自远程服务器的 JS
【发布时间】:2026-02-08 05:25:01
【问题描述】:

我找到了这篇关于“注入方式”的好文章,但作者从未完成它: http://hightechstartups.blogspot.ch/2012/05/different-way-of-developing-browser.html

我想要一个简单的跨浏览器扩展,没有任何第 3 方扩展或框架(尽可能轻巧且不依赖于第 3 方),可以从远程服务器加载 Jquery 和 JS,并且能够在页面完全加载之前或之后加载它。

我已经阅读了很多关于这个主题的主题,但是由于 IE10、Chrome 26 和 FF20 都出现了新的交叉链接限制,我想知道是否有人有关于以下要求的资源、源代码或教程:

我需要:

  • 跨浏览器扩展支持(IE 8+ 或 9+ 更坏的情况,Chrome 26+、FF20+、Safari)

    • 能够注入托管在另一台服务器上的单个 JS。在 HTML 的头部插入一个引用 javascript 文件的脚本标记 页面然后被执行

    • 不依赖第三方扩展(greasmonkey)或框架(Kango、Crossrider)

    • 能够在页面完全加载之前或之后加载

此方法允许我根据用户的位置自定义浏览器扩展,并且还可以避免在每次页面刷新时更新 JS 时进行更新。 我知道缺点,但我想实现这一点。

我知道像 Kango 或 crossrider 这样的跨浏览器框架,但两者都不适合我的需求。

我能找到的最接近的例子是How can I run a <script> tag that I just inserted dynamically from a BHO 但它只涵盖 IE,由于我对 Csharp 的经验很少,我希望看到一个完整的示例来正确理解它并从示例中学习。

我希望有一些示例,即使它不是跨浏览器(IE 对我来说是最糟糕的部分)。 非常感谢您的支持!

更新1:

关于Kango和Crossrider,如果你想用IE,Kango是2000美元,而对于Crossrider,你需要被他们分发和货币化。

我已经设法为 IE 和 Chrome 编写代码,但我一直在寻找一种“优雅”的方式,并认为考虑到本网站上人们的知识水平,这是最好的提问方式。

对于我目前使用 NSIS 的安装程序,但我也会测试 Wix。

最后我想我的唯一方法是学习 C++ 和 .net 以使其与 IE 一起工作,但如果有人可以提供更多源代码,那么测试速度和兼容性并在这里讨论什么是最好的解决方案。

【问题讨论】:

  • 以下可以将JS注入页面(您可以在Google上搜索并找到下载链接等):FF- Greasemonkey GC- Tampermonkey IE- Greasemonkey for IE
  • 感谢您的贡献,但我想避免依赖像 Greasemonkey 这样的另一个扩展
  • 有理由不想要猴子吗?它们允许自定义功能(可以在不同的浏览器中使用),并且您可以同时使用 JS 和 jQuery 注入。我看到的唯一问题是页面加载完成后发生的。

标签: google-chrome-extension cross-browser firefox-addon bho


【解决方案1】:

为什么 Kango 或 Crossrider 不符合您的需求?这两个框架都允许您操作页面的 DOM(这是您想要的):

如果您想编写自己的解决方案,请查看相关文档:

Internet Explorer 本身不支持扩展。我花了大约 80 个小时来创建一个稳定可靠的 IE 扩展,它支持跨站点 AJAX,一种(偏好)存储方法,并根据其 URL 尽早在任何框架中注入脚本。我在 Windows XP 和 Windows 7 上针对 IE 8-10 使用 Visual Express 2010 开发和测试了该扩展(该扩展可能适用于 IE6/7,但我决定不支持这些古老且很少使用的浏览器)。

首先,我基于LiveReloadIEExtension 用C# 编写了一个扩展(一个示例IE 扩展,它又基于this Stack Overflow answer - 另见this blog post)。它是功能性的,但它需要 .NET 4,缺乏对框架的支持,而且速度相对较慢。

所以,我决定用 C++ 从头开始​​编写一个 IE 扩展。 http://www.wischik.com/lu/programmer/bho.html 提供了一个很好的起点:C++ BHO 的示例代码,它根据键/鼠标事件更改文档的背景。我还通过looking at other code samples on CodeProject、MSDN 论坛上的主题、Stack Overflow 上的问题和答案、许多其他博客以及 MSDN 文档学到了很多东西:

创建 IE 扩展后,您当然要部署它。我使用Wix toolset 创建了一个 MSI。

【讨论】:

  • 非常感谢您的回答和宝贵的链接,我已经相应地更新了我的问题,因为理想情况下我想找到一种优雅的编码方式,尤其是对于 IE。
  • @BillCox 不要看我优雅:p 当我开始开发 IE 扩展时,我的 C# 零和几乎没有 C++ 技能。通过尝试创建一个有效的 IE 扩展来弄脏你的手,我在我的回答中提供了两个完全有效的示例。您真的应该能够使用我回答的资源创建您的第一个 BHO。
  • 非常感谢您的支持,我很惊讶我找不到任何人发布具有跨浏览器支持的简单 JS 注入器。
  • @BillCox 因为这样的东西价值数百万。 Crossrider was acquired for 37M $,例如。请展示一些认真的研究,我为您提供了开发工作扩展的可行起点,而您甚至没有尝试理解或使用代码!
  • 我没有不尊重的意思,您的贡献非常有价值,尤其是完整的 C++ BHO 示例,我还没有完成它的唯一原因是我从来没有做过 C++,所以我正在安装 VS 和学习从此。