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が含まれていますが、Firefoxではevent.elementID(イベントオブジェクトがある場合でも)nullです!明らかに、これにより、DoContinentsイベントハンドラーのコードが実行されなくなります。Firefoxでこれが発生するのに、他のブラウザでは発生しないのはなぜですか?

4

1 に答える 1

0

これを追跡するのは困難でしたが、次の条件が満たされると、VEMap イベントが中断されることが判明しました。それらは引き続き発生しますが、elementID などの重要なイベント データが欠落しています。

  1. Firefox でのみ発生
  2. mootools JS フレームワークがロードされているとき (必ずしも使用されているとは限りません)

これらの条件が満たされると、前述の問題が発生します。

Joomla は mootools を自動的にロードすることに注意してください。これが私に起こったことです。

于 2010-12-11T00:21:47.840 に答える