Javascript 如何防止通过弹出窗口单击功能?

Javascript 如何防止通过弹出窗口单击功能?,javascript,openlayers-3,Javascript,Openlayers 3,我需要一个弹出窗口打开时,点击一个向量层的功能。我用这个作为出发点。我的问题是,当一个功能被弹出窗口覆盖时,您仍然可以单击它(单击较低的点,您可以通过弹出窗口单击较高的点)。如何预防这种行为 相关代码: map.on('click', function(evt) { var element = popup.getElement(); $(element).popover({ "placement": "top", "html": true }); var pop

我需要一个弹出窗口打开时,点击一个向量层的功能。我用这个作为出发点。我的问题是,当一个功能被弹出窗口覆盖时,您仍然可以单击它(单击较低的点,您可以通过弹出窗口单击较高的点)。如何预防这种行为

相关代码:

map.on('click', function(evt) {
    var element = popup.getElement();
    $(element).popover({
    "placement": "top",
    "html": true
}); 
var popover = $(element).data("bs.popover");
var feature = map.forEachFeatureAtPixel(evt.pixel, function(feature, layer) {
    return feature;
});
if (feature) {
    popup.setPosition(feature.getGeometry().getCoordinates());
    popover.options.content = feature.get("name");
    $(element).popover('show');
} else {
    $(element).popover('destroy');
}
});

stopEvent:true
设置为您的
ol.Overlay
对象,如下所示:

var popup = new ol.Overlay({
  element: element,
  positioning: 'bottom-center',
  stopEvent: true
});

看看你的。

很简单,谢谢!但是,如果我想在弹出窗口中添加选项,例如带有事件侦听器的按钮,该怎么办。该按钮也会被停用,请参见演示:不完全如此。我认为发生的是按钮上的侦听器首先注册,这意味着最后执行。如果在创建按钮时注册侦听器,那么它将发生在事件预防之前。在此处查看更新版本:。现在它可以工作了!谢谢你,亚历山大!只剩下一个小小的缺陷:
map.on('pointermove',函数(e){…}
仍然会在弹出窗口下有一个功能时将光标设置为“pointer”。对于这个,我不知道。我建议您为此创建一个新线程。