jQuery.getScript

场景:

       页面需要展示当前位置,获取当前位置,要先加载js文件,获取定位服务,然后jsp页面执行初始化,把经纬度和addressname展示到页面,由于这里加载js文件是异步的,在文件没加载成功时,就执行了初始化,导致页面初始化的时候,参数值undefind。

原因:

       最后找到原因是:jQuery.getScript是异步请求,在请求执行的时间内执行下面的方法,导致定位服务的js没有加载完成,定位失败,页面显示当前位置:undefined。

解决办法:

       可以用定时器解决:1.setTimeout,让页面初始化的init方法延迟几秒钟执行,等定位服务的js加载完成后再执行(不太靠谱)

                                        2.setInterval,让初始化方法,每秒钟执行一次,直到当前位置参数不为null,就停止(clearInterval())

代码:

<script>
//动态加载js文件,引入定位服务功能
    $(function () {
            jQuery.getScript("https://unibase.gov.cn/DTHybirdEngine/hybridapi.js").done(function () {
                jQuery.getScript("${staticPath}/static/switchPlatform/getLocation-zjzw.js").done(function () {
                }).fail(function () {
                    $.toast("引入定位功能失败", "cancel");
                });
            
     });
</script>

 

<script>
    //地理位置
    var longitude;  //经度
    var latitude;   //纬度
    var address;    //位置
    var myMap;      //地图
    var mapInited = false;
window.onload = function(){
    //每秒钟执行一次,页面参数初始化
    var clock = setInterval(function () {
        setT();
        initData();
        initMyLocationAndMap();
//当经纬度有值,说明js已经加载,定位服务已经引入,此时停止这个定时器
		if (longitude&&latitude){
		    window.clearInterval(clock);
		}
    },1000);
}
</script>

getScript方法补充:

 

概述

通过 HTTP GET 请求载入并执行一个 JavaScript 文件。

jQuery 1.2 版本之前,getScript 只能调用同域 JS 文件。 1.2中,您可以跨域调用 JavaScript 文件。注意:Safari 2 或更早的版本不能在全局作用域中同步执行脚本。如果通过 getScript 加入脚本,请加入延时函数。

参数

url,[callback]String,FunctionV1.0

url:待载入 JS 文件地址。

callback:成功载入后回调函数。

示例

描述:

载入 <a title="http://jquery.com/plugins/project/color" class="external text" href="http://jquery.com/plugins/project/color">jQuery 官方颜色动画插件</a> 成功后绑定颜色变化动画。

HTML 代码:

<button id="go">» Run</button>
<div class="block"></div>

jQuery 代码:

jQuery.getScript("http://dev.jquery.com/view/trunk/plugins/color/jquery.color.js", function(){
  $("#go").click(function(){
    $(".block").animate( { backgroundColor: 'pink' }, 1000)
      .animate( { backgroundColor: 'blue' }, 1000);
  });
});

描述:

加载并执行 test.js。

jQuery 代码:

$.getScript("test.js");

描述:

加载并执行 test.js ,成功后显示信息。

jQuery 代码:

$.getScript("test.js", function(){
  alert("Script loaded and executed.");
}

 

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值