我把这里的每一行代码都去掉了,除了下面这行:
show = foo.show = function () {
alert("test");
};
现在,如果我以这种方式运行maps API,它就可以工作了:
foo.display = function() {
this.elem = document.getElementById('fooBox');
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=show";
document.body.appendChild(script);
};
但是当我试图通过callback=foo.show
调用它时,它失败了:
foo.display = function() {
this.elem = document.getElementById('fooBox');
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=foo.show";
document.body.appendChild(script);
};
唯一的错误,我可以从WebKit检查器是Uncaught TypeError: Cannot call method 'show' of undefined
。
我是新的谷歌地图API,但我认为方法不重要吗?我肯定在什么地方见过。我哪里做错了?
foo
是否声明为var
?如果是,则全局作用域无法访问它。添加如下声明:
foo = {};
foo.show = function () {
...
};
...
到你的代码中,它可能会纠正这个问题。WebKit的响应表明,在调用show()
时,变量foo
不在作用域中。