Python的NPAPI - Chrome扩展

4 投票
1 回答
4286 浏览
提问于 2025-04-16 12:12

我正在开发一个Chrome扩展程序,里面的逻辑都是用Python写的。现在我想在浏览器操作时传递一些参数,执行那个.py文件,并把结果返回到在浏览器操作时打开的弹出窗口。我知道要从JavaScript调用.py文件,我需要编写一个NPAPI插件。但我对该选择哪种方法有些困惑。我找到了几个选项,想选择最简单的方式来实现这个目标。

  1. Pyjamas Python Javascript Compiler:这是一个将Python代码转换成JavaScript的编译器,像是语言翻译器。不过在他们网站的常见问题中最后一个问题提到,它不能在Chrome上运行。(http://pyjs.org/

  2. FireBreath:FireBreath是一个框架,可以轻松创建强大的浏览器插件。(http://www.firebreath.org

  3. pyplugin - Python NPAPI插件用于XULRunner:它允许你使用XUL和Python构建跨平台的图形用户界面。(http://pyplugin.com

请指导我选择最简单的方法,这样我就可以传递参数,执行.py文件,并接收从.py返回的结果。

谢谢

1 个回答

5

首先,Pyjamas这个Python到JavaScript的编译器并不完整——并不是所有的Python特性都能在JavaScript中实现,所以把所有的Python代码都转成JavaScript是不可能的。这可能会或可能不会满足你的需求,但我觉得它并不是“即时”的,你需要在电脑上写好代码,然后通过这个“编译器”来生成JavaScript代码。

FireBreath是互联网历史上最棒的东西——我应该知道,因为我是它的作者——它绝对能让你实现想要的功能,但你需要懂得如何用C++和Python结合起来才能做到这一点。话虽如此,你可能可以使用boost.python,它是FireBreath自带的boost库的一部分,但我自己没用过,所以不太清楚。使用NPAPI插件几乎可以实现你想要的任何功能,但在这方面你需要特别注意安全问题。

快速看一下pyplugin,它基本上就是你在FireBreath中写的东西,只不过是一个原始的npapi插件。如果这个能满足你的需求,那可能是最简单的选择。它是为XUL设计的,但这可能会有问题,因为Chrome不支持XUL。你也许可以修改它(因为它是GPL协议的),来实现你的需求。当然,如果你不打算发布你的源代码,那可能也会是个问题。

解决你问题的最快方法是什么呢?这要看你自己决定;这需要更多的研究,但我希望这些信息能至少帮助你入门。祝你好运!

撰写回答