通过Chrome网址将javascript加载到HEAD中

时间:2011-08-06 04:16:13

标签: javascript firefox xul

我正在为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>

单击按钮时,错误控制台显示未定义切换。

1 个答案:

答案 0 :(得分:2)

您是否将相关的Chrome软件包列入白名单,因为允许不受信任的内容加载部分内容?出于各种安全和隐私原因,默认设置是不允许这样做。见https://developer.mozilla.org/en/chrome_registration#contentaccessible