Javascript Browserify窗口对象没有全局变量

Javascript Browserify窗口对象没有全局变量,javascript,global-variables,browserify,Javascript,Global Variables,Browserify,我需要添加以下表单的全局库: window.Foo = function() { api = {}; api.myVar = GLOBALS; return api; } 使用外部脚本标记创建我的项目GLOBALS是从window.FOO依赖的另一个库添加到window的另一个变量。但是,当我在其中一个Browserify模块中访问window时,window.Foo不在那里。如果我尝试填充window.FOO,则其全局依赖项对它不可用。不过,我可以从chrome inspecto

我需要添加以下表单的全局库:

window.Foo = function() {
  api = {};
  api.myVar = GLOBALS;
  return api;
}

使用外部脚本标记创建我的项目
GLOBALS
是从
window.FOO
依赖的另一个库添加到
window
的另一个变量。但是,当我在其中一个Browserify模块中访问
window
时,
window.Foo
不在那里。如果我尝试填充
window.FOO
,则其全局依赖项对它不可用。不过,我可以从chrome inspector查看并使用
window.Foo
。如何在模块中获取“真实”窗口对象?谢谢您的帮助。

您应该使用类似于下面的模式,其中
Foo
将附加到所有环境中该
指向的任何对象。与在浏览器中一样,它会将其添加到
窗口中

(function(global) {
    global.Foo = function() {
         return {};
    }
})(this);                  

明白了!该项目是一个chrome扩展,正在进行沙盒处理。这与Browserify无关。

我稍微编辑了一下我的答案。这不起作用,因为
window.Foo
还依赖于添加到窗口对象的全局变量。我测试了我的代码,它在浏览器和节点中都起作用。如果
Foo
依赖于其他全局变量,请展开问题,了解更多信息。好的,我再次更新了我的问题。希望这能解决所有问题。首先尝试使用
console.log
或任何其他api仅访问
GLOBALS
,以确认是否正确加载。可以有两种解决方案,因为它是一个客户端脚本,所以在三方脚本中编辑/替换所有
window
标识符为
this
。或者,第二个解决方案是执行/添加
window=this所有脚本之前的脚本,使用此选项使所有其他脚本引用具有窗口属性的环境\u全局,而不考虑任何环境。至少,如果GLOBALS使用domapi,那么重新编写它,我认为没有其他方法可以做到。嗯,不幸的是,由于项目的性质,我无法重写。我想我得把布朗塞里菲放下了。