Bing Map的问题--p_elSource.attachEvent不是一个函数

ZeN*_*eNo 9 javascript jquery firebug virtual-earth bing-maps

我正面临着Bing Maps的主要问题.我正在使用:http: //dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v = 6.3

首先,我在firebug中遇到错误:

 this.CreditsFor=function(a,i,j,h)
 {
  var e=[];
  if(a!="undefined"&&a!=null&&typeof m_tableKeys[a]!="undefined"&&
   ........
   MVC_Init_FlatlandView_Drawing();
   MVC_Init_View3D_Drawing()};
   if(typeof closeDependency!="undefined")
       closeDependency("mapcontrol.js")
Run Code Online (Sandbox Code Playgroud)

之后我将.LoadMap()调用放在try-catch块中.它抛出异常:

p_elSource.attachEvent不是一个函数

我已经尝试过在msdn论坛推荐的以下解决方案:

  • 在调用LoadMap()之前为VEMapOptions.BirdseyeOrientation设置defualt值
  • 确保DOCTYPE在那里

仅当启用了firebug时才会发生这种情况.

Joh*_*Cee 10

芝诺,

你在用FF4吗?我在FF4中遇到了问题,这是由于我的脚本调用尚未定义的VE功能的竞争条件引起的.我在这里得到了解决方案.

特别要注意Josh Unger的答案,他在那里描述了使用setInterval来等待辅助库加载并做到这一点.

var interval = setInterval(function() {
    if (eval("typeof VEMap") != "undefined" &&
        document.getElementById("map").attachEvent != undefined)   
    {
        clearInterval(interval);
        LoadMap();
    }
}, 10);
Run Code Online (Sandbox Code Playgroud)

您必须更新示例代码以适合您的具体情况.重要的是避免在VE中调用任何内容,直到您确定VE脚本已加载辅助库已加载为止.

使用FF4的人最近向我报告了这个问题.我怀疑FF4与FF3相比(可能更快的脚本执行,或脚本执行时的差异)触发了错误.在任何情况下,当我更新我的代码以延迟调用VE直到加载了libs时,错误就消失了,并且映射正常工作.

请注意,我没有进行延迟加载,并且Firebug不是问题.当线程在2008/2009年活跃时,这些显然是因素.