mouseout 事件的传单在更改 iconUrl 时未触发
Leaflet on mouseout event not firing when changing iconUrl
我遇到了传单问题,这是 mouseout
事件。
在下面的代码中,有时(特别是快速移动鼠标时)不会触发 mouseout 事件。 Mouse out !
没有出现在控制台中。
我发现此行为与图标替换有关。一个简单的 layer.setStyle
每次都有效。 (这里我用的是leaflet-gpx plugin but it works the same way as leaflet's IconUrl or shadowUrl)
// This works every time
gpxPath.on('mouseover', function (e) {
var layer = e.target;
layer.options.marker_options.startIconUrl = 'myHoverIconStartUrl';
layer.options.marker_options.endIconUrl = 'myHoverIconEndUrl';
layer.reload();
});
gpxPath.on('mouseout', function (e) {
console.log('Mouse out !')
var layer = e.target;
/* those two lines below cause the issue */
layer.options.marker_options.startIconUrl = '';
layer.options.marker_options.endIconUrl = '';
layer.reload();
});
我知道 mouseout 事件有时会导致这样的问题,但在这种特殊情况下,我不得不使用 leaflet 事件,我有点不知所措。
您是否尝试让标记在悬停时显示不同的图标?
没有例子很难说,但我认为正在发生的事情是:
您的 mouseout
事件没有可靠地触发,因为 mouseover
事件是 运行 连续的,只要您的鼠标放在它上面,每次图标重建。
如果您也在该函数中添加 console.log
,您可能会注意到这一点。你可能会在它重建时碰巧离开,所以你不会可靠地触发 mouseout
事件。
如果是这样,请尝试类似的操作:
line.once('mouseover', function () {
//switch to icons
});
line.on('mouseout', function () {
//clear icons
//Prevent mouseover event from firing continuously if/when the icon changes
line.once('mouseover', function () {
//switch to icons
});
});
我遇到了传单问题,这是 mouseout
事件。
在下面的代码中,有时(特别是快速移动鼠标时)不会触发 mouseout 事件。 Mouse out !
没有出现在控制台中。
我发现此行为与图标替换有关。一个简单的 layer.setStyle
每次都有效。 (这里我用的是leaflet-gpx plugin but it works the same way as leaflet's IconUrl or shadowUrl)
// This works every time
gpxPath.on('mouseover', function (e) {
var layer = e.target;
layer.options.marker_options.startIconUrl = 'myHoverIconStartUrl';
layer.options.marker_options.endIconUrl = 'myHoverIconEndUrl';
layer.reload();
});
gpxPath.on('mouseout', function (e) {
console.log('Mouse out !')
var layer = e.target;
/* those two lines below cause the issue */
layer.options.marker_options.startIconUrl = '';
layer.options.marker_options.endIconUrl = '';
layer.reload();
});
我知道 mouseout 事件有时会导致这样的问题,但在这种特殊情况下,我不得不使用 leaflet 事件,我有点不知所措。
您是否尝试让标记在悬停时显示不同的图标?
没有例子很难说,但我认为正在发生的事情是:
您的 mouseout
事件没有可靠地触发,因为 mouseover
事件是 运行 连续的,只要您的鼠标放在它上面,每次图标重建。
如果您也在该函数中添加 console.log
,您可能会注意到这一点。你可能会在它重建时碰巧离开,所以你不会可靠地触发 mouseout
事件。
如果是这样,请尝试类似的操作:
line.once('mouseover', function () {
//switch to icons
});
line.on('mouseout', function () {
//clear icons
//Prevent mouseover event from firing continuously if/when the icon changes
line.once('mouseover', function () {
//switch to icons
});
});