0

次のコードのように、jQuery の関数を使用してmousedownイベントを追加しました。<body>.bind()

$('body').bind('mousedown', function(){alert(1)});

ページのどこでも完全に機能します。しかし、それは(???)「マップ」divによってブロックされます。(「ブロックされた」と言うほど正確かどうかはわかりませんが、私の気持ちで出てくる言葉です)

関数も機能.mousedown()しません:

$('body').mousedown(function(){alert(1)});

以下は、OpenLayers を使用したマップ div です。

<script type='text/javascript'>
var map;
function init() {
    var controls_array = [
        new OpenLayers.Control.Navigation({}),
        new OpenLayers.Control.PanZoomBar({}),
        new OpenLayers.Control.LayerSwitcher(),
    ];
    var mapOptions = {
        controls: controls_array,
        projection: new OpenLayers.Projection("EPSG:900913")
    };
    map = new OpenLayers.Map('map', mapOptions);

    var googleLayer = new OpenLayers.Layer.Google(
        'Google Map Layer',
        {
            numZoomLevels: 20,
            isBaseLayer: true,
            sphericalMercator: true,
            projection: "EPSG:900913"
        }
    );
    map.addLayer(googleLayer);
    map.zoomToExtent(
        new OpenLayers.Bounds(3235795.723665,493480.6015713,
        3716431.757455,911132.5240634), true
    );
}
</script>
<body onload='init();'>
    <div id="map" style='width: 800px; height: 700px;'></div>
</body>

問題は、「マップ」divの外で機能することですがmousedown、マップ上にいるときに警告メッセージが表示されません。

ただし、次のイベントmouseupは、「マップ」div の内外に関係なく機能します。

$('body').bind('mouseup', function(){alert(1)});
$('body').mouseup(function(){alert(1)});

関数がイベントOpenLayers.Controls.DragPan()に反応するためだと思います。mousedown

それで、それを修正するにはどうすればよいですか?イベントを<body>?

4

1 に答える 1