我正在爲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元素(如螢火蟲看):
當我點擊按鈕錯誤控制檯說沒有定義切換。
感謝您的輸入!因此,如果我的插件文件夾是firefox_extension並且腳本位於其中的chrome文件夾中,則需要修改chorme.manifest文件並添加一行,如「content firefox_extension chrome/contentaccessible = yes」?或者有什麼辦法可以將它應用到單個腳本文件中? –
@Sagar V在chrome.manifest中應該有這樣一行;你只需要添加'contentaccessible = yes'。如果你希望它只適用於某些文件,你需要將這些文件放在一個單獨的chrome包中。擴展可以通過chrome.manifest映射到多個chrome包。 –
謝謝!它現在正在爲我工作。 –