0

Internet Explorer 9 では、Google Maps API v2 (非推奨) を使用して、スクロール ホイールでズームすると、ページもスクロールします。この問題の回避策を知っている人はいますか? (残念ながら、コードベースを v3 にアップグレードすることはまだできません。) この動作は、以前のバージョンの Internet Explorer では発生しません。

ここにテストページがあります

4

4 に答える 4

1

多くの人がネット上で同じ問題を抱えているようですが、解決策が投稿されていません。だからここに私のものがあります:

スクロール不可能なコンポーネントはスクロール イベントを発生させず、そのイベントはドキュメント オブジェクトでキャンセルできないため、標準の DOM は使用できませんでした。幸いなことに、「mousewheel」と呼ばれる小さな jQuery プラグインがあり、「mousewheel」および「unmousewheel」イベント バインディング関数を jQuery に追加します。「マウスホイール」イベントによって呼び出される関数は false を返してキャンセルすることができ、ドキュメントはそれを受け取りません。そこで、IE9 以上をテストし、必要に応じてこの小さなプラグインをダウンロードして、マップを保持する div に適用します。

于 2011-06-18T09:47:12.170 に答える
1

してみてください

$('#map').mouseover( function(){ 
    document.body.style.overflow = 'hidden';
    $('#wrap').css('margin-right','17px');
    console.log('mouse -> map , ' , document.body.scroll, ' / ' , document.body.style.overflow );   
} );

$('#map').mouseout( function(){ 
    document.body.style.overflow = 'auto';
    $('#wrap').css('margin-right','0px');
    console.log('mouse map -> , ' ,  document.body.scroll, ' / ' , document.body.style.overflow);  
} );

このコードはスクロールバーを非表示にします。IE でスクロールを無効にする唯一の方法であることがわかりました。 document.body.scroll = "no"働かないでください。(IE9)

#map - Google マップの div で、#wraper - すべてのページの div です。 $('#wrap').css('margin-right','17px');// 左スクロールバーが非表示/表示されたときにページ幅を維持するためだけに

于 2011-07-11T12:13:14.597 に答える
0

同じ問題が発生し、次のように解決しました。カーソルがマップ要素の上にあり、スクロールホイールが移動すると、ページ全体のスクロールが無効になります。地図のみがズームインまたはズームアウトします

$('#map').live("mouseover",function() {
  $('#map').mousewheel(function(event) {    
  stopWheel(event);

  });
})

function stopWheel(e){
if(!e){ /* IE7, IE8, Chrome, Safari */ 
    e = window.event; 
}
if(e.preventDefault) { /* Chrome, Safari, Firefox */ 
    e.preventDefault(); 
} 
e.returnValue = false; /* IE7, IE8 */
}
于 2012-06-25T09:57:48.627 に答える
0

PrototypeJS 1.7 でこの問題を修正するには (Marek や theazureshadow が示唆するように)、IE9 で使用できます。

$(gMapDiv).observe('mousewheel', function(event){
    event.stop();
});
于 2011-11-22T09:09:05.573 に答える