javascript - Leaflet 标记弹出窗口中的缓存破坏

标签 javascript caching leaflet

我正在使用带有加载更新图像的弹出窗口的 Leaflet map 。但是,图像最终会被缓存。我想我会通过添加 Date.now() 来解决这个问题,但这只会添加页面加载时的日期,而不是弹出窗口打开时的日期。

.bindPopup('<img src="image.jpg?'+ Date.now()+'" width="260" height="196" border="0"><br>Location One').addTo(map),

我试过将日期放在一个单独的函数中......

function foo () {
setInterval(Date.now(), 10000)
}

并从弹出窗口中调用该函数:

   .bindPopup('<img src="image.jpg?'+ foo() +'" width="260" height="196" border="0"><br>Location One').addTo(map),

然而这只是加载:“image.jpg?undefined”。

我怎样才能更新缓存清除时间戳?

(目前我只是使用元刷新来更新整个页面,这不是很优雅,并且在您到达 map 上想要的位置时重新加载页面...)

最佳答案

您可以将任意容器/空内容绑定(bind)到弹出窗口,而不是在相关的 MapMarker 或上监听 popupopen 事件路径

scope.on('popupopen', function(ev){
    var src = 'image.jpg?v=' + Date.now();
    ev.popup.setContent('<img src="'+ src +'"/>');
});

关于javascript - Leaflet 标记弹出窗口中的缓存破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37093620/

相关文章:

javascript - 如何在 Javascript textarea 中捕获事件以记录所有键入的文本

javascript - 我想使用复选框来改变 var 的输出

javascript - 为什么 frame breaker 可以跨域工作,是否可以有条件地使用 frame breaker?

javascript - 在 jQuery 中动态定义具有特定样式的类

angular - 将 BeautifyMarker 插件添加到 ngx-leaflet 项目中

caching - Redis mget 与 get

javascript - 不要在 Blogger 中缓存图像

java - 从 spring boot 测试调用的@Caching 方法[用@Transactional 注释] 不起作用

javascript - 使用 React 传单注册事件

r - 单击 Leaflet map 上的点以在 Shiny 中生成 ggplot