2011-08-06 48 views
1

我正在爲Firefox開發自定義插件。對於這個插件中的其中一個功能,我有一個按鈕,點擊時必須爲另一個div元素切換hide/show。這是通過Javascript函數實現的。該函數本身也位於插件中打包的文件中。通過其Chrome瀏覽器將頭文件加載到HEAD中

由於div元素在瀏覽器頁面上我試圖通過使用它的chrome URL將此函數的Javascript加載到頁面的HEAD中。但是,它沒有給出預期的結果。

下面是相關代碼的隻言片語:

執行的切換操作實際的JavaScript。鉻的網址是:chrome://firefox_extension/content/togglerowz.js如果我把這個URL放在瀏覽器中,它可以顯示下面的代碼。

function toggle(doc) { 
    var resultBlock = doc.getElementById("RowzFFExtensionDynamicContainer"); 
    var toggleButton = doc.getElementById("RowzFFToggle"); 
    if (resultBlock.style.display == "block") { 
     resultBlock.style.display = "none"; 
     toggleButton.value = "Maximize"; 
    } else { 
     resultBlock.style.display = "block"; 
     toggleButton.value = "Minimize"; 
    } 
} 

另一個將它加載到瀏覽器HEAD的Javascript。這是由窗口加載事件觸發的。

var doc = aEvent.originalTarget; 
var togglerowzscript = doc.createElement("script"); 
togglerowzscript.type = "application/javascript"; 
togglerowzscript.src = "chrome://firefox_extension/content/togglerowz.js"; 
var headvar = doc.getElementsByTagName("head")[0]; 
headvar.appendChild(togglerowzscript); 

頁面加載時,下面的內容是在頁面的HEAD元素(如螢火蟲看):

當我點擊按鈕錯誤控制檯說沒有定義切換。

回答

2

您是否已將相關chrome軟件包列入白名單,以允許不受信任的內容加載它的某些部分?默認設置是不允許出於各種安全和隱私原因。見https://developer.mozilla.org/en/chrome_registration#contentaccessible

+0

感謝您的輸入!因此,如果我的插件文件夾是firefox_extension並且腳本位於其中的chrome文件夾中,則需要修改chorme.manifest文件並添加一行,如「content firefox_extension chrome/contentaccessible = yes」?或者有什麼辦法可以將它應用到單個腳本文件中? –

+1

@Sagar V在chrome.manifest中應該有這樣一行;你只需要添加'contentaccessible = yes'。如果你希望它只適用於某些文件,你需要將這些文件放在一個單獨的chrome包中。擴展可以通過chrome.manifest映射到多個chrome包。 –

+0

謝謝!它現在正在爲我工​​作。 –

相關問題