2010-01-11 94 views
1

我知道jQuery是Firefox扩展的首选Javascript框架,但我对Prototype很满意,需要实现一个简单的Firefox扩展。如何在Firefox扩展中使用Prototype?

不幸的是,我在调用Prototype方法时遇到了问题。每个方法调用都会导致无操作:没有发生方法调用的错误或其他符号。

这里的覆盖代码:

<overlay id="liteextension-overlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 

这调用原型方法返回一个空数组,即使有在页面的div:

var all_divs = $$('div'); 

“原型.js“文件与XUL文件位于相同的目录中。

+0

有可能是未捕获的异常发生。你可以运行萤火虫,并打开“停止所有错误”,看看脚本调试器说什么?或者将你的代码行包装在try/catch块中并查看异常?像'try {var a = $$('div')} catch(e){alert e.message}'这样简单的东西可能会有所帮助。 – glomad 2010-01-15 19:02:17

回答

2

在Firefox扩展中使用像prototype和jquery这样的库是一件很复杂的事情。问题是,从XUL加载时,JQuery不会在同一个上下文中加载,而不是从网页加载。因此,如果您尝试操作页面中的东西,则加载到XUL中的库不会在它期望的页面中看到页面DOM。有了JQuery(不知道原型),你可以通过指向正确的上下文来解决这个问题。其次,在browser.xul overlay中的扩展中导入库会将库中定义的所有函数和变量置于全局名称空间中,可能与其他扩展名甚至是Firefox代码冲突。这可能会导致很大的混乱。

有在这个论坛发布的详细信息,它是关于JQuery的,但采用同样的问题......也许建议的解决方案可能对您有用:

http://forums.mozillazine.org/viewtopic.php?f=19&t=1460255