0

Firefox で適切な表示/非表示の動作を得るのに問題があります。サイトは Chrome/Safari で動作します。今のところIEについて心配する必要はありません。

サイトはこちら:

http://chrismcaleenan.com/map/?page_id=6

ユーザーが Chrome/Safari でマップ上の状態をマウスオーバー/マウスアウト/クリックしたときの望ましい動作を確認できます (インセットは無視してください - これはまだ進行中の作業です)。Firefox では、サイトはマウスオーバーを処理するように見えますが、マウスアウトやクリックは処理しません。

エラーは実際のCSSまたは他の場所にある可能性がありますが、関連するコードは次のとおりです。

//actions on poly mouseover     
        for (var i = 0; i < statesPoly.length; i++) {
            (function(i){
                google.maps.event.addListener(eval(statesPoly[i]), 'mouseover', function() {
                    this.setOptions({ strokeWeight: '2' });
                    $("#"+statesPoly[i]).addClass("highlight");
                    if(map.getZoom() <= 6) 
                    $('#supp_data'+i).show();
                });
            })(i);
        }

        //actions on poly click     
        var zoomArray = new Array();

        for (var i = 0; i < statesPoly.length; i++) {
            zoomArray[i]=0;

            (function(i){
                google.maps.event.addListener(eval(statesPoly[i]), 'click', function() {
                    if (!zoomArray[i]) {                
                        map.panTo(eval(stateCenters[i]));
                        map.setZoom(7);
                        polyArray[i].setOptions({ fillOpacity: '0' });
                        zoomArray[i] = 1;   
                        $('#supp_data'+i).hide();
                        $('#inset-map').hide();
                    }
                    else {
                        map.panTo(myLatLng);
                        map.setZoom(6);
                        $('#inset-map').show();

                        //for some reason bug causes 11,12 to skip - adding manual reset
                        polyArray[i].setOptions({ fillOpacity: '.8' });
                        zoomArray[i] = 0;
                        polyArray[11].setOptions({ fillOpacity: '.8' });
                        zoomArray[11] = 0;
                        polyArray[12].setOptions({ fillOpacity: '.8' });
                        zoomArray[12] = 0;

                        for (n = 0; n < polyArray.length; n++) {
                            polyArray[n].setOptions({ fillOpacity: '.8' });
                            zoomArray[n] = 0;   
                        }

                    }
                });
            })(i);
        }

        //actions on table mouseover 
        for (var i = 0; i < statesPoly.length; i++) {
            (function(i){
                google.maps.event.addDomListener(document.getElementById(statesPoly[i]), 'mouseover', function() {
                    $("#"+statesPoly[i]).addClass("highlight");
                    polyArray[i].setOptions({ strokeWeight: '2' });
                    if(map.getZoom() <= 6)
                    $('#supp_data'+i).show();
                });
            })(i);
        }

        //actions on table click    
        var zoomArray = new Array();

        for (var i = 0; i < statesPoly.length; i++) {
            zoomArray[i]=0;

            (function(i){
                google.maps.event.addDomListener(document.getElementById(statesPoly[i]), 'click', function() {
                    if (!zoomArray[i]) {                
                        map.panTo(eval(stateCenters[i]));
                        map.setZoom(7);
                        polyArray[i].setOptions({ fillOpacity: '0' });
                        zoomArray[i] = 1;   
                        $('#supp_data'+i).hide();
                        $('#inset-map').hide();

                    }
                    else {
                        map.panTo(myLatLng);
                        map.setZoom(6);
                        $('#inset-map').show();


                        //for some reason bug causes 11,12 to skip - adding manual reset
                        polyArray[i].setOptions({ fillOpacity: '.8' });
                        zoomArray[i] = 0;
                        polyArray[11].setOptions({ fillOpacity: '.8' });
                        zoomArray[11] = 0;
                        polyArray[12].setOptions({ fillOpacity: '.8' });
                        zoomArray[12] = 0;

                        for (n = 0; n < polyArray.length; n++) {
                            polyArray[n].setOptions({ fillOpacity: '.8' });
                            zoomArray[n] = 0;   
                        }

                    }
                });
            })(i);
        }

        //actions on poly mouseout 
        for (var i = 0; i < statesPoly.length; i++) {
            (function(i){
                google.maps.event.addListener(eval(statesPoly[i]), 'mouseout', function() {
                    this.setOptions({ strokeWeight: '1' });
                    $("#"+statesPoly[i]).removeClass("highlight");
                    $('#supp_data'+i).hide();
                });
            })(i);
        }

        //actions on table mouseout
        for (var i = 0; i < statesPoly.length; i++) {
            (function(i){
                google.maps.event.addDomListener(document.getElementById(statesPoly[i]), 'mouseout', function() {
                    $("#"+statesPoly[i]).removeClass("highlight");
                    polyArray[i].setOptions({ strokeWeight: '1' });
                    $('#supp_data'+i).hide();
                });
            })(i);
        }
4

1 に答える 1

0

解決しました。Poly オブジェクトの 1 つを配列に入れたことはありません。Chrome と Safari はスクリプトを実行し続けましたが、Firefox はスクリプトを強制終了しました (エラーなし)。

于 2012-06-09T18:15:29.593 に答える