2011-04-06 43 views
9

我面臨Bing地圖的主要問題。我使用: http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.3Bing地圖問題--p_elSource.attachEvent不是函數

首先我的螢火收到錯誤爲:

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塊。有人拋出異常:

p_elSource.attachEvent不是 功能

我已經嘗試了被推薦在MSDN論壇whihc以下解決方案:

  • 設置VEMapOptions defualt值。調用LoadMap之前的BirdseyeOrientation()
  • 確保DOCTYPE存在

只有在啓用螢火蟲時纔會發生這種情況。

+0

其他人有沒有遇到類似的問題..或者我是唯一一個在這裏面對這個問題? – ZeNo 2011-04-08 07:27:05

回答

10

芝諾,

您使用的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的人向我報告了這個問題。我懷疑FF4與FF3相比(可能更快的腳本執行,或腳本執行時的差異)引發了錯誤。在任何情況下,當我更新我的代碼以延遲調用VE,直到加載庫,錯誤消失,地圖正常工作。

請注意,我沒有做延遲加載,並且Firebug不是問題。這些顯然是2008/2009年線索活躍的因素。

+0

我試過那個約翰尼,但那並沒有太大的幫助。 – ZeNo 2011-05-02 18:34:25

+0

當我增加間隔時,這對我有效;我用1000而不是10。 – Cosmin 2011-10-20 15:04:56

+0

'if(eval(「typeofVEMap」)!=「undefined」)''需要什麼?不會'如果(window.VEMap)'工作呢? – Kreegr 2012-06-26 21:23:36