Openlayers 右键单击上下文菜单事件触发多次

Openlayers 右键单击上下文菜单事件触发多次,openlayers,Openlayers,我有如下代码片段: map.getViewport().addEventListener('contextmenu', function (e) { e.preventDefault(); console.log(e.x); openContextMenu(e.x, e.y); }); 基本上,我正在尝试向openlayer地图添加contextmenu。但一种奇怪的行为正在发生。当我右键单击时,事件侦听器

我有如下代码片段:

map.getViewport().addEventListener('contextmenu', function (e) {
            e.preventDefault();
            console.log(e.x);
            openContextMenu(e.x, e.y);
        });
基本上,我正在尝试向openlayer地图添加contextmenu。但一种奇怪的行为正在发生。当我右键单击时,事件侦听器将被引发多次。i、 e.在上面的代码中,只要在地图上单击鼠标右键,console.log就会打印30多次

现在,如果我使用一个标志来处理这个问题,那么上下文菜单就不会被渲染,也就是说,openlayer看起来需要所有这些多个调用。 但是,由于我打算对侦听器执行复杂的操作,所以我不能让它在右键单击一次时被多次调用

我如何解决这个问题?是否有其他更好的方法将右键单击上下文菜单添加到openlayer地图


我正在使用openlayer 3.0

您的代码片段适合我,事件只触发一次。这段代码可能是在页面上多次执行的上下文中吗?换句话说,是否多次添加事件侦听器?如果是这样的话,OpenLayers将分别注册每个侦听器,即使它们是相同的,当您单击时,您将看到它们全部被触发