Загрузка JavaScript в HEAD по его хромированной ссылке - PullRequest
1 голос
/ 06 августа 2011

Я разрабатываю собственный плагин для Firefox. Для одной из функций в этом плагине у меня есть кнопка, которая при нажатии должна переключать скрытие / отображение для другого элемента div. Это достигается с помощью функции Javascript. Сама функция находится в файле, который также упакован в плагин.

Поскольку элементы div находятся на странице браузера, я пытаюсь загрузить Javascript для этой функции в ГОЛОВКУ страницы, используя ее URL-адрес chrome. Однако это не дает желаемого результата.

Ниже приведены фрагменты соответствующего кода:

Фактический Javascript, который выполняет действие переключения. URL-адрес Chrome для этого: 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";
    }
} 

Еще один 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 Ответ

2 голосов
/ 07 августа 2011

Вы добавили в белый список соответствующий пакет Chrome, который позволяет ненадежному контенту загружать его части? Настройка по умолчанию запрещает это по различным причинам безопасности и конфиденциальности. Смотри https://developer.mozilla.org/en/chrome_registration#contentaccessible

...