jQuery.getScript无法在移动设备上运行

时间:2013-12-07 07:49:01

标签: javascript jquery

即使移动设备已连接互联网,

$.getScript也无法正常工作。 我们如何为下面的代码编写jquery.getscript?我无法在脚本中加载我的网址,因为如果移动设备没有互联网我的应用程序没有启动,所以如果互联网连接可用,我想要包含我的网址。有谁可以请更正我的代码?

if (states[networkState] == 'No network connection') {
    // Device with no network data connection
    document.getElementById("location").innerHTML = "Location unavailable";
} else {
    // code for getting current address using Lat/Longs

    $.getScript("https://maps.googleapis.com/maps/api/js?sensor=true", function () {
        var geocoder;
        geocoder = new google.maps.Geocoder();
        var latlng = new google.maps.LatLng(latitude, longitude);
        geocoder.geocode({
            'latLng': latlng
        }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                if (results[0]) {
                    var add = results[0].formatted_address;
                    document.getElementById("location").innerHTML = "Location : " + add;
                } else {
                    document.getElementById("location").innerHTML = "No Results found ";
                }
            } else {
                //document.getElementById("location").innerHTML="Geocoder failed due to: " + status;
                alert("Geocoder failed due to: " + status);
            }
        });
    });
}

1 个答案:

答案 0 :(得分:1)

更新:

实际上底部的东西不起作用。谷歌很聪明......响应又回来了,但它们更聪明甚至......如果你看看他们的API文档,你会发现它们允许你在你的请求中指定一个回调。所以你会这样做:

jQuery('body').append('<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&callback=address"/>')

请注意对callback=address

的引用

故事的寓意是阅读API文档:D

我假设但不起作用的东西:

它失败了,因为还没有定义某些东西。但是如果你查看返回的脚本,你会看到它是从https://maps.gstatic.com/intl/en_us/mapfiles/api-3/15/4/main.js动态创建一个脚本标签(是的另一个)。

你可以:

  1. 在您的$.getScript()回调中加载该脚本,然后在回调中加载您的地址函数。

    由于上面的URL可能是动态生成的,因此您可能希望使用正则表达式来解析第一个getScript响应,然后从该响应中拉出URL以进行回调。您应该考虑在此使用$.ajax而不是$.getScript,这样您就可以使用cache结果,否则它将使用随机数每次都重新请求新脚本。

  2. 或者您可以考虑在回调中使用计时器来查找是否存在新变量或对象,以确定它是否已完成加载(无论之前是否失败)