我们正在使用d3.js开发一个网站,它使用Firefox或Chrome完美运行,遗憾的是它必须与最新版本的IE一起使用。
我们在IE9和IE10中遇到困难,其数据值由:
检索d3.csv(文件名,功能(错误,数据){
传递给函数的数据不是预期的JavaScript数组,而是类型为XDomainRequest的对象。
代码似乎在加载页面后第一次正常工作,并在后续迭代中失败。
直到今天早上我们使用的是d3版本3.0.8,我们现在已经切换到版本3.3.6
较新版本的D3已经解决了IE10中的问题,但没有改善IE9中的情况。
有什么想法吗?
更多信息已添加2013-10-08。
我有一个测试页面有两个按钮,一个按钮调用d3.csv来从与测试页面相同的服务器请求文件,另一个按钮调用d3.csv来请求来自不同服务器的文件CORS启用。对不起我在互联网上没有这个测试页面。
使用Firefox或Chrome一切正常。
使用IE9可以通过更改“浏览历史记录”设置来使其工作。
在IE9中,单击右上角的齿轮:
互联网选项 - >一般 - >浏览历史记录“设置”
这会在标题下显示一组单选按钮: “检查存储页面的较新版本”
“每次访问网页时” - 这都可以正常工作。 “自动” - 这使它失败。
此设置可以在加载测试页后来回更改,无需重新加载页面,通过CORS使d3.csv工作或失败。
查看IE9的F12开发人员工具中的“网络”选项卡,可以认为无论上述Brower历史记录设置如何,都会有HTTP请求和304响应。
然而,将Wireshark置于案例中,这就说明了一个不同的故事。当浏览器历史记录设置为“每次访问网页时”,Wireshark显示HTTP请求和HTTP 304响应,d3.csv将数组传递给回调函数。
当浏览器历史记录设置为“自动”时,Wireshark既不捕获请求也不捕获响应,d3.csv传递类型为XDomainRequest的对象而不是数组,即失败。