У меня есть следующий упрощенный код:Firefox расширение - ошибка: вызов функции() блокируется ПСУ
main.js:
var data = require("sdk/self").data;
var tabs = require("sdk/tabs");
tabs.on('ready', function(tab) {
console.log("start");
let worker = tab.attach({
contentScriptFile: [
data.url("jquery.min.js"),
data.url("test.js")
],
});
worker.port.emit("start", data.load("popups/start.html"));
console.log("end");
});
test.js:
console.log("test.js");
self.port.on("start", function (content) {
console.log("I get the message");
$('body').append(content);
});
Проблема: Это работает как раз ne, и в большинстве случаев все в порядке. В только один веб-сайт и, в частности, в хорошо известный github.com
, он производит следующее сообщение об ошибке:
console.log: test: start
console.log: test: end
console.error:
Message: Error: call to Function() blocked by CSP
console.error:
Message: TypeError: this.sandbox is undefined
Stack:
[email protected]://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/content/worker-child.js:75:7
[email protected]://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:112:9
[email protected]://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:89:38
[email protected]://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/remote/child.js:54:38
Примечание 1: Проблема с обменом сообщения start
. Но почему он работает везде, кроме github.com/*
?
Примечание 2: Я использую cfx
, с jpm
он отлично работает. Есть ли способ исправить это или мне нужно обновить расширение для работы с jpm
?
Спасибо за ваш ответ, и это очень полезно. Но он отвечает только на «примечание 2». Есть ли у вас какие-либо идеи относительно «примечания 1»? Я хочу не только исправить проблему, но и понять, почему ее производят. Сделайте свой ответ более наглядным, это поможет мне лучше понять проблему. –
Вы не должны замаскировать вопросы как сноску. – the8472
Извините за сноски и еще раз спасибо за ваше редактирование. –