我为我正在制作的游戏制作了一个服务器,它为我生成了一张地图,但是在我制作的这个测试客户端上,它无法正常工作。
我将站点添加为脚本,它作为脚本工作正常,但是当读取 jsfiddle 上的 javascript 时,它说函数 callback() 没有定义,但它显然是,它应该发送地图对象到控制台,但它只是出错了......:/
这是 JS Fiddle 的链接:http: //jsfiddle.net/Tgwizman/9QrUF/
我希望你们能弄清楚,因为我完全不知道为什么它不起作用......
我为我正在制作的游戏制作了一个服务器,它为我生成了一张地图,但是在我制作的这个测试客户端上,它无法正常工作。
我将站点添加为脚本,它作为脚本工作正常,但是当读取 jsfiddle 上的 javascript 时,它说函数 callback() 没有定义,但它显然是,它应该发送地图对象到控制台,但它只是出错了......:/
这是 JS Fiddle 的链接:http: //jsfiddle.net/Tgwizman/9QrUF/
我希望你们能弄清楚,因为我完全不知道为什么它不起作用......
在您的 jsfiddle 中,javascript 回调函数是在您使用 javascript 包含加载地图后定义的,此时您的回调尚未定义。
这是一个固定的小提琴。
示例来源:
<script>
var map;
function callback(cb) {
map = cb;
console.log(map);
}
</script>
<script src='http://mmorpg_server.jit.su/?map=0,0'></script>
必须在加载地图之前定义回调。否则,您正在调用未定义的函数。外部脚本可以按任何顺序下载,但按照它们被编码到页面中的顺序执行。
<script>
var map;
//declare callback first before anything uses it
function callback(cb) {
map = cb;
console.log(map);
}
</script>
//this calls the callback it MUST be loaded after
<script src='http://mmorpg_server.jit.su/?map=0,0'></script>
这是因为 jsFiddle 并不总是能完美运行。
发生这种情况是因为 jsfiddle 将脚本元素包装在它们自己的包装器(闭包)中,因此无法访问其中声明的任何函数
没关系,KARASZI István和Joseph 的答案更好
<script type="text/javascript">
var map;
function callback(cb)
{
map = cb;
console.log(map);
}
</script>
<script src='http://mmorpg_server.jit.su/?map=0,0'>
</script>
希望这会奏效!