我正在为Firefox开发一个自定义插件。对于这个插件中的一个功能,我有一个按钮,当点击它时必须切换隐藏/显示另一个div元素。这是通过Javascript函数实现的。该函数本身也在一个打包在插件中的文件中。
由于div元素在浏览器页面上,我试图通过使用其chrome URL将此函数的Javascript加载到页面的HEAD中。但是,它没有给出理想的结果。
以下是相关代码的摘要:
执行切换操作的实际Javascript。此网址的Chrome网址为:chrome://firefox_extension/content/togglerowz.js
如果我将此网址放入浏览器,则可以显示以下代码。
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元素中(如Firebug中所示):
<script type="application/javascript" src="chrome://firefox_extension/content/togglerowz.js">
Filtered chrome url chrome://firefox_extension/content/togglerowz.js
</script>
单击按钮时,错误控制台显示未定义切换。
答案 0 :(得分:2)
您是否将相关的Chrome软件包列入白名单,因为允许不受信任的内容加载部分内容?出于各种安全和隐私原因,默认设置是不允许这样做。见https://developer.mozilla.org/en/chrome_registration#contentaccessible