之前一直采用chrome测试echarts插件,通过location.href加上文件的URL的方式下载文件。今天遇到一个echarts一直报“调用的对象无效“的错误。开始的时候一直以为是echarts插件的兼容性问题,后来发现屏蔽掉location.href=url;语句后,软件没有报echarts调用的对象无效。后来发现不是文件下载方式的问题,进而影响到了echarts插件的正常使用。
1.检测浏览器,根据不同的浏览器使用不同的下载方式。(关于浏览器类型检测的内容请参考笔者 js获取客户端浏览器类型)
if (getBrowserType() == "Chrome") {
location.href = url; //谷歌文件下载方式
} else {
window.open(url); //ie文件下载方式
}
2.使用iframe的统一下载文件的方式。
function download(url) {
var iframe = document.createElement("iframe")
iframe.style.display = "none";
iframe.src = url;
document.body.appendChild(iframe);
}
这次排错经验让我明白浏览器兼容性问题一部分是对代码规范的不了解,另一方面是自己对不同浏览器还不够了解。我们不要出现问题就先去找现有插件的问题,怀疑是框架的问题,首先需要做的就是检查和调试自己的代码,然后再去尝试网上他人的解决方案。
笔者参考的来源:怎么用js通过文件的url下载文件到本地