在最项目的时候遇到了浏览器兼容的问题,在chrome中js初始化数据动态赋值是正常的,但是在Safari浏览器中跑初始化数据动态赋值js代码就会报错,原因是获取工程路径时出现获取错误的现象,例如通过以下代码获取工程路径:
function getRootPath(){
var strFullPath=window.document.location.href;var strPath=window.document.location.pathname;
var pos=strFullPath.indexOf(strPath);
var prePath=strFullPath.substring(0,pos);
var postPath=strPath.substring(0,strPath.substr(1).indexOf('/')+1);
return(prePath);
}
在chrome浏览器会返回:http://localhost:8080
在Safari浏览器中仅返回:http://
为解决这样的问题,需要通过判断浏览器类型来获取工程路径。
获取浏览器类型及版本号:
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
if (window.ActiveXObject)
Sys.ie = ua.match(/msie ([\d.]+)/)[1]
else if (document.getBoxObjectFor)
Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1]
else if (window.MessageEvent && !document.getBoxObjectFor)
Sys.chrome = ua.match(/chrome\/([\d.]+)/)[1]
else if (window.opera)
Sys.opera = ua.match(/opera.([\d.]+)/)[1]
else if (window.openDatabase)
Sys.safari = ua.match(/version\/([\d.]+)/)[1];
if(Sys.ie) document.write('IE: '+Sys.ie);
if(Sys.firefox) document.write('Firefox: '+Sys.firefox);
if(Sys.chrome) document.write('Chrome: '+Sys.chrome);
if(Sys.opera) document.write('Opera: '+Sys.opera);
if(Sys.safari) document.write('Safari: '+Sys.safari);