2017-07-26 13 views
1

私は、幅と高さが親divよりも大きいbingmapを持っています。その後prentのdivどのようにbingmapフォーカス時にスクロールを無効にする?

または一番下までスクロールしてbingmapの外側をクリックし、「突然、親がトップの位置にスクロールし、ダウンprentスクロールバーをスクロールしてbingmapをクリックし、」

、スクロール可能に設定し、あなたがスクロールバーをスクロールするのを見ることができます "

どのように駄目この効果?最後に

<div style="overflow: auto; width: 400px; height: 200px;"> 
 
    <div id='myMap' style='width: 100vw; height: 200vh;position: relative;'></div> 
 
</div> 
 
<script type='text/javascript'> 
 
    var map; 
 

 
    function loadMapScenario() { 
 
    map = new Microsoft.Maps.Map(document.getElementById('myMap'), { 
 
     credentials: '' 
 
    }); 
 
    } 
 
</script> 
 

 
<script type='text/javascript' src='https://www.bing.com/api/maps/mapcontrol?callback=loadMapScenario' async defer></script>

+0

小さなコンテナにスクロール/ズームマップをラップする理由は何ですか?優れたユーザーエクスペリエンスではありません。 – DarthJDG

+0

@DarthJDG実際に私の地図の高さはビューのポートの高さ以上です。したがって、ユーザーが地図の下をスクロールしてクリックすると、突然上にスクロールします。 – azad

+0

最初のクリックでのみ発生するようです。 DarthJDGが言及したように、これは、スクロール可能なdiv内にマップを持つ奇妙なユーザーエクスペリエンスのようです。 – rbrundritt

答えて

0

私は自分のコードにパッチを追加しました。親(私のケースwindow)を元の位置にスクロールしてください。ロジックは地図上にマウスを置くとスクロール位置を保存し、ウィンドウスクロール時にそれを復元します。

var scrollPositionY = -1; 
Microsoft.Maps.Events.addHandler(map, 'mousedown', function(e){ 

    scrollPositionY = document.documentElement.scrollTop || document.body.scrollTop; 

    $(window).bind('scroll',preventWindowScroll); 
    setTimeout(function(){ 
     $(window).unbind('scroll',preventWindowScroll); 
    },100); 
}); 

function preventWindowScroll(e){ 
    window.scrollTo(0,scrollPositionY);//restore to saved position 
    e.preventDefault(); 
    return false; 
} 
関連する問題