0

我有一个带有以下相关代码位的 VEMap 控件:

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,但在 Firefoxevent.elementID中为空(即使有一个事件对象)!显然这会导致我的DoContinents事件处理程序中的代码无法运行。为什么这会发生在 Firefox 而不是我的其他浏览器?

4

1 回答 1

0

这是一个很难追踪的问题,但事实证明,如果满足以下条件,VEMap 事件就会中断。它们仍然会触发,但缺少诸如 elementID 之类的关键事件数据。

  1. 仅在 Firefox 中发生
  2. 当mootools JS框架被加载时(不一定被使用)

当满足这些条件时,就会出现上述问题。

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

于 2010-12-11T00:21:47.840 回答