刚刚看别人写的一段代码,测试的时候一句话始终过不去。源码我就不写了,大家看个大概就行了。var basepath = navigator.basePath;
......
......
function A(){
   this.LeftImg.src = basepath + "/images/left.gif";//此句出现问题
   ......
   ......
}如果是非ie6的环境,这里的basepath一定是undefined,组合出来的地址就成了undefined/inamges/left.gif
只有ie6才正常,能够组合出正确的地址。我们且不讨论这个系统对浏览器的兼容性如何,关键是这里的navigator.basePath让我一头雾水。
除了ie6,ie7、ie8、ie9,ff,chrome均表示不知道这个对象是个什么鸟(ie5,ie4我没有,就不做测试了)。
询问了万能的谷歌和无所不知的度娘,他们都告诉我没有听说过这个对象。好吧,我承认你是ie6特有的,不过我还是想知道这个对象的来龙去脉,比如那些浏览器支持该对象,是否后来又取消了,还是有其他对象代替了。
各位看官有知道的回一下吧。

解决方案 »

  1.   

    话说,我IE6下navigator也没有basePath这个属性
      

  2.   

    看了下, 都说 navigator 是浏览器版本信息的呀, 
    哪里有 basePath ?应该是写到了哪个路径吧, 或者 
    var basepath = navigator.basePath;, 上面还有其它给定义的 navigator ?
      

  3.   

    好吧,我承认ie6也不支持,不过明明是undefined,为什么只有ie6不会组合成错误的字符串呢,而是组成了空字符串?
    我单独写了一个html用来测试这个basePath,只要是ie,都会组合成“undefined/images/left.gif”这样的字符串,而在该系统中,只有ie6无视了这个undefined,组合成了“(空字符串)/images/left.gif”这样的字符串。
    ie6果然是个怪物。
      

  4.   


    IE下面也不会无视undefined啊。。IE下未赋值的情况下肯定还是“undefined/images/left.gif”
      

  5.   

    但是现实就是这样,在这个系统里,如果是ie8,一定是“undefined/images/left.gif”,但是在ie6下,却成了“/images/left.gif”,我又看了几遍对方写的js脚本,确实没有什么特殊的地方。真是长见识啊。
      

  6.   

    你试试
    var a;
    alert(a + "/test/")
      

  7.   

    好吧,我把对方的源码粘上来。不过单独测试的话,还是会有undefined,不知道系统中是否还有其他的问题。
    代码是一个权限树的图片缓存,是在两个不同的js文件中的,我删除了无关的代码。//-------------nav.js-------------
    var basePath=navigator.basePath;var icons = getIocns()function getIocns() {
            var icons=new Imagelist();
            
            icons.path=basePath+"/console/images/tree/";
            icons.type="gif";
            icons.add("parent","default");
            icons.add("expand","expand");
            icons.add("collapse","collapse");
            icons.add("children","link");
         return icons;
    }//--------------tree.js----------
    function Imagelist()
    {
        try{
    var item=[]
    count=0
    this.path=""
    this.type="gif"
    this.err=""
    iml=this this.add=function(src,key)
    {
    var img=new Image()
    if(src==null || src=="")return
    if(src.indexOf("/")==-1)src=iml.path+src
    if(!(/\.gif$|\.jpg$|\.png$|\.bmp$/i).test(src))src+="."+iml.type
    if(key==null || key=="")key=src.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
    item[count]=img;img.index=count;item[key]=img;count++;
    img.onerror=function()
    {
    alert("Imagelist cause run time error:\nImage file "+img.src+" not found!")
    item[img.index]=null;item[key]=null;count--;
    }
    img.src=src
    return img
    }
    this.item=item
    this.count=function(){return count;}
    }
    catch(e){
    iml.err="alai_imagelist cause run time error!\nError number:"+e.number+".\nError description:"+e.description;
    alert(iml.err);
    return iml;
    }
    }还有其他地方也都使用了basePath,但是这段代码是最明显的,在非ie6环境下无法正常加载图片(因为路径里含有undefined),而ie6正常识别并加载。