0

我添加了一个mousedown事件来<body>使用 jQuery 的.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

0

OpenLayers 有自己的 eventListener,因此您需要覆盖它们,例如

map.events.listeners.mousedown.unshift({ 
    func: function(){
        alert('hola muheres');
    }
});
于 2013-07-24T12:49:49.680 回答