2010-12-06 76 views
0

我有与下面的代码相关的位VEMap控制:为什么VEMap onclick事件在其他broswers但不是Firefox中运行?

map = new VEMap('map'); 

map.AttachEvent("onclick", DoContinents); 

function DoContinents(event) 
    { 
     if (event.elementID != null) 
     { 
     //var shape = map.GetShapeByID(event.elementID); 
     //var id = shape.GetID(); 
     //var id = event.elementID; 
     //alert (event.elementID); 
     if (event.elementID == 'msftve_1001_200000_10000') 
      { 
       map.SetCenterAndZoom(new VELatLong(15, -90), 2); 
     } 
      else if (event.elementID == 'msftve_1001_200001_10001') 
      { 
       map.SetCenterAndZoom(new VELatLong(48, 23), 2); 
      } 
      else if (event.elementID == 'msftve_1001_200002_10002') 
      { 
      map.SetCenterAndZoom(new VELatLong(4, 18), 2); 
       } 
      else if (event.elementID == 'msftve_1001_200003_10003') 
      { 
       map.SetCenterAndZoom(new VELatLong(43, 87), 2); 
       } 
      else if (event.elementID == 'msftve_1001_200004_10004') 
      { 
       map.SetCenterAndZoom(new VELatLong(-25, 134), 2); 
       } 

      cont.Hide(); 
      vid.Show(); 
      $('#sidebar_list').show(); 
      $('#legend').show(); 
     } 
    } 

只是正常工作在Chrome,甚至在IE浏览器!然而,当我在Firefox中加载页面时,当我点击我的地图图标时没有任何反应。经过进一步调查,我发现事件在所有浏览器和DoContinents中运行。在Chrome和IE中,event.elementID包含我单击的VEShape的ID,但在Firefox中event.elementID为空(即使有事件对象)!显然这会导致我的DoContinents事件处理程序中的代码无法运行。为什么会发生在Firefox而不是我的其他浏览器?

回答

0

这是一个很难追查,但事实证明,如果满足以下条件,VEMap事件中断。它们仍然会被触发,但重要事件数据(如elementID)缺失。

  1. 只有当(不一定被使用)JS框架正在加载的mootools的发生在Firefox

当这些条件满足时发生上述问题。

请注意,Joomla会自动加载mootools。这是发生在我身上的事情。

相关问题