Google chrome extension RequireJS不支持Firefox WebExtensions插件中的JavaScript
我正在尝试使用将Chrome扩展移植到Firefox插件。我正在使用加载JavaScript文件。 下面的代码在我的Chrome扩展中运行良好,但在Firefox中却不行 有人对此有什么建议吗?谢谢 manifest.json: requireInit.js: csApp.jsGoogle chrome extension RequireJS不支持Firefox WebExtensions插件中的JavaScript,google-chrome-extension,requirejs,firefox-addon,firefox-addon-webextensions,Google Chrome Extension,Requirejs,Firefox Addon,Firefox Addon Webextensions,我正在尝试使用将Chrome扩展移植到Firefox插件。我正在使用加载JavaScript文件。 下面的代码在我的Chrome扩展中运行良好,但在Firefox中却不行 有人对此有什么建议吗?谢谢 manifest.json: requireInit.js: csApp.js 编辑:console.log()在jQuery中工作。但是,csApp.js中的console.log()不起作用。我发现了问题的根源 它是 我使用的是lodash.js而不是下划线.js "underscore": "
编辑:
console.log()
在jQuery中工作。但是,csApp.js中的console.log()
不起作用。我发现了问题的根源
它是
我使用的是lodash.js而不是下划线.js
"underscore": "js/vendor/lodash",
Lodash与Firefox 45-46兼容,我使用的是最新的Firefox,即47.0。因此,我用下划线替换了lodash,现在我的web扩展工作正常。好的,当您查看Firefox提供的诊断工具和控制台时,您看到了什么?有什么东西可以装吗?有些东西负载,而另一些则不负载?编辑您的问题以添加这些详细信息。根据您在问题中提供的信息,一种可能是Firefox没有执行
requireInit.js
,但这只是一种猜测。感谢您的建议@Louis请查看编辑。您已经排除了我在评论中表达的一种可能性。很好,但是你没有回答我在评论开始时提出的任何问题。请编辑您的问题以回答这些问题。除已提出的问题外,请提供完整的答案,以便可以复制您的问题。您的扩展功能还需要其他文件。如果没有这些,我们必须猜测您的扩展是如何配置的,这可能会对您的问题产生重大影响。对于主题上的问题,代码需要在问题中。但是,即使是指向其他地方代码的链接也会有所帮助。
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);
};
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
});
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;
});
"underscore": "js/vendor/lodash",