WebExtensions APIを使用してChrome拡張機能をFirefoxアドオンに移植しようとしています。 JavaScriptファイルを読み込むためにRequireJSを使用しています。 下記のコードはChrome拡張機能で正常に動作していますが、Firefoxでは正常に動作していません。FirefoxでJavaScriptを使用できないようにするにはWebExtensionsアドオン
誰もがこれに関する助言をお持ちですか?ありがとう。
manifest.jsonを:
{
"name": "Firefox WebExtension",
"version": "0.0.5",
"manifest_version": 2,
"description": "First Firefox WebExtensions",
"icons": {
"16": "img/c-ext3.png",
"48": "img/c-ext3.png",
"128": "img/c-ext3.png"
},
"background": {
"scripts": [
"js/vendor/require.js", "js/config/loader.js", "js/config/requireInit.js"
]
},
"applications": {
"gecko": {
"id": "[email protected]ozilla.org",
"strict_min_version": "44.0",
"strict_max_version": "50.*"
}
},
"browser_action": {
"default_icon": "img/c-ext3.png",
"default_title": "Firefox WebExtension",
"default_popup": "src/browser_action/browser_action.html"
},
"permissions": [
"contextMenus",
"cookies",
"http://*/*", "https://*/*", "file://*/*",
"notifications",
"tabs",
"<all_urls>"
],
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"content_scripts": [{
"matches": ["http://*/*", "https://*/*"],
"js": ["js/vendor/require.js", "js/config/loader.js", "js/config/requireInit.js"]
}],
"web_accessible_resources": [
"js/*", "src/*", "css/*", "img/*"
]}
loader.js
require.load = function(context, moduleName, url) {
var xhr = new XMLHttpRequest(),
evalResponseText = function(xhr) {
eval(xhr.responseText);
context.completeLoad(moduleName);
};
xhr.open("GET", url, true);
xhr.onreadystatechange = function(e) {
if (xhr.readyState === 4 && xhr.status === 200) {
evalResponseText.call(window, xhr);
}
};
xhr.send(null);
};
requireInit.js:
var baseUrl=browser.extension.getURL("/");
requirejs.config({
config: {
text: {
useXhr: function (url, protocol, hostname, port) {
// allow cross-domain requests
// remote server allows CORS
return true;
}
}
},
skipDataMain: true,
baseUrl: baseUrl,
paths: {
"jquery": "js/vendor/jquery",
"underscore": "js/vendor/lodash",
"backbone": "js/vendor/backbone",
"marionette": "js/vendor/marionette",
"app": "js/app"
}
});
console.log("before loading files");//working
require(['jquery', 'app/csApp'], function ($, app) {
console.log("all js loaded");//not working
});
csApp.js
console.log("inside cs app");//working
define(function(require) {
'use strict';
var $ = require('jquery'),
_ = require('underscore'),
Backbone = require('backbone'),
Marionette = require('marionette'),
csApp = new Marionette.Application();
console.log("csApp");//not working
return csApp;
});
編集:jQueryの作品内のconsole.log()
。しかし、console.log()
の中にcsApp.jsが機能していません。
だから、Firefoxが提供する診断ツールとコンソールを見ると、そこには何が見えますか?そこには何もロードされていますか?負荷がかかるものとそうでないものがあります。これらの詳細を追加するには、質問を編集してください。あなたの質問にあなたが提供する情報を使って、 'requireInit.js'がFirefoxで実行されないことがありますが、これは単なる推測です。 – Louis
あなたのアドバイスのおかげで@ルイスは編集を参照してください。 – sweeta
私は私のコメントで表現した可能性を排除しました。良いですが、あなたが私のコメントの冒頭で尋ねた質問には一切答えなかった。あなたの質問を編集して回答してください。 – Louis