用Google Map API做一个定位系统的时候,在IE里JS总是加载不到,提示if (GBrowserIsCompatible()) 缺少对象,一定要自己手动刷新一次页面才可以,很怪。
在FF里面却可以正常加载找了很久原因,都找不到解决的办法,有的只是说IE遇到<script>的时候会给一个线程处理,然后主线程继续往下执行
有没有办法让它等

解决方案 »

  1.   

    页面比较大, WEB地址在: http://web.123y.cn:8080/
    发一些主要的
    //加载Google Map
    function loadGoogleJS(){
    var key = getKey();
    document.write('<script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;key='+key+'&sensor=true" charset="UTF-8"></script>');
    }
    loadGoogleJS();function load(){
                if (GBrowserIsCompatible()) {
                 // 引用GMAP地图
                  map = new GMap2(document.getElementById("map"));
                  mapControl1 = new GMapTypeControl();
                 // 初始化地图
                  map.addControl(mapControl1);
                  //map.addMapType(G_HYBRID_MAP)
                  map.removeMapType(G_SATELLITE_MAP);
                 
                  map.addControl(new GLargeMapControl());
                  map.addControl(new GOverviewMapControl());
       
        //创建右键菜单
       createContextMenu(map); //             getdata(1);
           // cars();
               }           
          } window.onload = function(){
    setMainHight();
    load();
    }<div id="center">
    <div id="map"></div>
    </div>
      

  2.   

    给loadGoogleJS加个返回值呢?不知道可以不
    function loadGoogleJS(){
        var key = getKey();
        document.write('<script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;key='+key+'&sensor=true" charset="UTF-8"></script>');
        return 1;
    }function load(){
          if(loadGoogleJS() == '1'){
                if (GBrowserIsCompatible()) {
                 // 引用GMAP地图
                  map = new GMap2(document.getElementById("map"));
                  mapControl1 = new GMapTypeControl();
                 // 初始化地图
                  map.addControl(mapControl1);
                  //map.addMapType(G_HYBRID_MAP)
                  map.removeMapType(G_SATELLITE_MAP);
                 
                  map.addControl(new GLargeMapControl());
                  map.addControl(new GOverviewMapControl());
               
                   //创建右键菜单
                      createContextMenu(map); //             getdata(1);
                      // cars();
                  }           
          } 
    }
      

  3.   

      哎,我也在开发中碰到类似问题
       IE 就一bug王啊。
       靠,要不是有微软顶着,谁还用IE啊
      

  4.   

    http://web.123y.cn:8080/ 
    打开这个没问题啊
      

  5.   

    这个window.setTimeout(6000);能不能让它等呢
      

  6.   

    楼上的 如果真是开一个线程的话,return 1也没用吧.
    我想知道,
     document.write('<script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;key='+key+'&sensor=true" charset="UTF-8"></script>');
    加载js与直接
    <script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;key='+key+'&sensor=true" charset="UTF-8"></script>
    有区别么??
    为什么刷新后才会有效,难道刷新的时候没有重复请求,也就是第一次没加载好,执行了方法,然后在某个时候加载好了,然后你刷新,它没有重新加载那个JS,所以这个时候才顺利执行方法成功了么??
      

  7.   

    用返回值可能限制比较大,就是如果其它的JS文件用到Google的JS的话,那也是会提示错
    比如引用这个类PopupMarker的JS文件,下面是定义实现
    /**
     * @private
     */
    PopupMarker.prototype = new GMarker(new GLatLng(0, 0));这样IE会跳过加载Google的JS解析到它,然后说GMarker找不到对象
      

  8.   

    打开这个http://web.123y.cn:8080/ ,然后点那个小地图进去就会发现有问题了
      

  9.   

    sleep()可以让线程等待,alert()也可以哦。
      

  10.   

    主要问题我归结就是这样
    <script type="text/javascript" src="key.js">      //加载JS
    alert(getKey());       //执行JS文件里的方法如果这个key.js文件比较大的话 IE会提示找不到方法, FF或者其它浏览器是显示正常
      

  11.   


    <script type="text/javascript" src="key.js">      //加载JS
    alert(getKey());      //执行JS文件里的方法如果这个key.js文件比较大的话 IE会提示找不到方法, FF或者其它浏览器是显示正常
      

  12.   

    http://groups.google.com/group/google-maps-api-china/browse_thread/thread/1ff0f7bb76e7635e/e42871b26fbef0f7?lnk=gst&q=GBrowserIsCompatible()#e42871b26fbef0f7看看这个 是不是字符集的问题
      

  13.   

    alert和sleep算是比较牵强,就算用了也不知道有没有加载完
    我重做了部分JS代码,使用了return
    不过最大的原因还是在于服务器,可能那一段时间服务器运行不正常对这个也有点影响