2010-01-11 129 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