编写Firefox插件以解析自定义客户端语言
我对除JavaScript以外的客户端语言有一个想法,我想研究开发一个Firefox插件,该插件将在页面中处理此新语言的内容,例如<script type =" newscript" src =" path /script.ns" />,就好像它是本机支持的语言一样。该插件将执行所有语言解析,并且理想情况下能够像JavaScript一样在浏览器以及网页中的html和css上执行所有操作。
我做了很多谷歌搜索,发现了一些有关编写基本Firefox插件的文章,但是没有什么比这复杂的了。
这有可能吗?
解决方案
回答
我们是否真的要将页面绑定到我们自己的自定义脚本语言?还是只是想用非javascript编写客户端代码?如果后者尝试使用MileScript,haXe或者Google Web Toolkit
回答
如果我了解我们想做什么,则需要编写一个Gecko插件。通过插件,我们将能够注册自己的MIME类型,然后操纵Javascript和DOM。
这意味着我们需要在页面上包含<object />
或者<embed />
标签来加载插件,但是随后我们可以查找<script type =" application / x-yourtype" />
,获取该脚本标签的innerText并使用插件对其进行解析。
正如Nickolay所建议的那样,替代方法是使用浏览器当前支持的功能或者创建浏览器的自定义版本。 Daniel Spiewak关于使用Java小程序(或者Flash小程序也可以使用)的建议也是有效的。
我们需要的信息可在Mozilla的开发人员网站上找到:
- Gecko插件API参考
- 插件基础
回答
一个有趣的想法。请注意,我们实际上不需要编写特定于浏览器的插件即可执行此操作。有人尝试在Applet中使用JRuby执行嵌入在<script type =" text / ruby">`中的代码。这样的解决方案在启动时可能会比较慢(由于加载整个JVM实例的开销),但从长远来看(跨浏览器)它将更加灵活。此外,用JVM语言构建自定义语言解释器要比尝试将其塞入Gecko容易一些。
回答
@Nathan de Vries:不,实际上,我们建议的NPAPI插件不允许一种实现对<script type = ...>的支持。
OP:这并不容易,但是要寻找适用于Python的PyDOM和PyXPCOM语言绑定。前者完全可以满足我们对Python的要求,但是我不确定它的当前状态。无论如何,很可能我们需要创建自己的Firefox构建以支持其他脚本类型。