我正在尝试使用SDK为另一个程序构建扩展。代码是用JavaScript编写的。
我使用SDK的内置requireJS功能在外部库(Highcharts)中加载。
然而,当我尝试通过Highcharts变量访问Highcharts时,浏览器告诉我它未定义。
我尝试将console.log(this)添加到我的代码中,之后它应该被加载,你可以在图像中看到下面的输出。 Highcharts似乎已被加载。当我尝试console.log(EPCMPROXY)时,我得到了那个对象,但是当我尝试console.log(Highcharts)时,我得到了未定义。如果我打开浏览器窗口的控制台,并手动键入Highcharts,它将返回该对象。我做错了什么,或者错误地引用了Highcharts?当它们在同一范围内时,我怎么可能访问一个对象(EPCMPROXY)而不能访问另一个对象(Highcharts)?
代码:
console.log(this);
console.log(Highcharts);
console.log(EPCMPROXY); //some var generated by the page, used as example here
console.log(this)的输出:
j {owner: f, init: function, componentDeleted: function, beforeUpdate: function, afterUpdate: function…}
$:function ()
arguments : null
caller : null
length : 0
name : ""
prototype : Object
__proto__ : function ()
[[FunctionLocation]] : combined_static_includes_1.jsversion=20170105152024:25
[[Scopes]]:Scopes[2]
0 : Closure (a)
1 : Global
$ : function (e,i)
AsyncHandleJavascriptError : function AsyncHandleJavascriptError(a)
EPCMPROXY : Object
ES6Promise : Object
Highcharts : Object
console.log(Highcharts)的输出:
undefined
console.log(EPCMPROXY)的输出:
Object
...
答案 0 :(得分:0)
问题是当行" console.log(Highcharts)"执行后,它还没有实际加载(由于我的requireJS设置问题)。我执行时可以看到它的原因" console.log(this)"正如dsfq指出的那样,它显示了可能以后加载的对象,因为它是异步运行的。小蓝"我"图标,可以在屏幕截图中看到,实际上是来自Chrome的工具提示,其中指出:"下面的价值刚刚评估了#34;。