我注意到用json调用(d3.json
)重新绘制D3元素并不想在IE9 +上更新。原因是json调用被缓存,因此浏览器在新数据传递时没有注册。正常jQuery ajax调用的解决方法是将其属性设置为cache:false,全局用于所有ajax调用:
$.ajaxSetup({ cache: false });
但是如何将其添加到d3.json
调用,因为它使用自己的方法来调用ajax?我成功地在路径后添加了当前时间戳:
var noCache = new Date().getTime();
d3.json(data + "?_=" + noCache)
但这样做有点蹩脚......任何建议我怎么能做到这一点?或者更好的是,如果IE正在运行,如何设置它:)
答案 0 :(得分:0)
我有同样的问题。 我通过将此代码添加到html文档的HEAD来解决它。
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="pragma" content="no-cache">
但是,这会阻止某个页面中每个对象的缓存,因此请小心使用图像,字体等。
答案 1 :(得分:0)
在使用不允许 url 参数的 API 时,我很幸运:
d3.json('your url', {
cache: "no-store"
}).then(...