2012-09-13 208 views
0

我目前正在做一個Firefox擴展,但是當我瀏覽到一個特定的URL時,我無法獲得運行的功能。pageMod似乎不工作

在我的chrome.manifest我有overlay chrome://browser/content/browser.xul chrome://boxcutter/content/overlay.xulcontent/在實際的文件系統位於chrome/content/(我使用擴展生成器)。

因此,我認爲我可以在我的overlay.xul中使用腳本標記來引用包含我的pageMod函數的我的main.js文件。

我pageMod功能(我可能已經塞滿東西在這裏,它爲什麼不工作):

(function() { 
    var pageMod; 
    pageMod = require('page-mod'); 

    new pageMod.PageMod({ 
     include: ["http://battlelog.battlefield.com/bf3/*"], 
     contentScriptFile: data.url('boxcutter.js') 
    }); 
}).call(this); 

這應該叫我boxcutter.js文件,當用戶進入Battlelog,但沒有似乎發生。有一次,我以爲這是我的JS,我在boxcutter.js中有過,但是在添加alert('test');並刷新頁面時,它並沒有正常工作,但沒有發生任何事情。

這讓我相信我在我的overlay.xul文件中做了錯誤的事情,但是我可以在Battlelog站點上通過Firebug調用jQuery函數(我知道其中沒有jQuery庫,因爲我檢查過)。

因此,我認爲我的pageMod腳本(上圖)出現問題,但這不正確,或者我在編寫pageMod腳本時出錯。

+1

我相信'pageMod'不是構造函數。所以,刪除'new'。 –

+0

@RobW沒有什麼區別。 alert()在我的boxcutter.js仍然沒有被調用。 – Mythrillic

回答

2

page-mod是由Firefox Add-on SDK提供的模塊 - 這是一個用於構建擴展的框架。如果你不使用該框架(並且考慮到你正在討論chrome清單和覆蓋層,那麼顯然你不會),那麼你顯然不能使用它的功能。如果您希望保留傳統擴展程序,那麼您可能需要在覆蓋區中輸入add a handler for the DOMContentLoaded event,然後檢查該頁面是否符合您的標準並對其進行處理。