javascript - Bing map 问题 --p_elSource.attachEvent 不是函数

标签 javascript jquery firebug bing-maps virtual-earth

我在使用 Bing map 时遇到了重大问题。我在用 : 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")

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

p_elSource.attachEvent is not a function

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

  • 在调用 LoadMap() 之前为 VEMapOptions.BirdseyeOrientation 设置默认值
  • 确保 DOCTYPE 存在

只有在启用 Firebug 时才会发生这种情况。

最佳答案

芝诺,

您使用的是 FF4 吗?我在 FF4 中遇到了问题,它是由竞争条件引起的,我的脚本正在调用尚未定义的 VE 函数。我有一个解决方案 here .

请特别注意 Josh Unger 的回答,他在其中描述了使用 setInterval 来等待辅助库加载并执行此操作。

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

您必须更新示例代码以适应您的情况。重要的是避免在 VE 中调用任何东西,直到您确定 VE 脚本已加载并且辅助库已加载。

使用 FF4 的人最近向我报告了这个问题。我怀疑与 FF3 相比,关于 FF4 的一些东西(可能更快的脚本执行,或者脚本执行时间的差异)触发了错误。无论如何,当我更新我的代码以延迟调用 VE 直到加载库时,错误消失并且 map 正常工作。

请注意,我不是在进行延迟加载,Firebug 也不是问题所在。这些显然是线程在 2008/2009 年活跃时的因素。

关于javascript - Bing map 问题 --p_elSource.attachEvent 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5566393/

相关文章:

javascript - 如何查看页面中js脚本加载的顺序

javascript - 事件监听器 - 等效于 Firefox?

html - 尝试最小化表格高度(TABLE、TBODY 和偏移量)

javascript - Android 浏览器的 screen.width, screen.height & window.innerWidth & window.innerHeight 不可靠

javascript - 我如何在 Json 文件中编写此数据的结构?

javascript - 切换 jQuery 1.3.2 → 1.4.4 时出错

jquery - 如何更改右键粘贴选项的按钮颜色?

javascript - 季度日期选择器

javascript - 如何在 JavaScript 中编写一个好的 Caps Lock 检测解决方案?

javascript - 如何防止jquery提交按钮刷新HTML页面?