Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery$.getScript有一半时间无法工作_Javascript_Jquery_Ajax_Cordova_Mapquest - Fatal编程技术网

Javascript jQuery$.getScript有一半时间无法工作

Javascript jQuery$.getScript有一半时间无法工作,javascript,jquery,ajax,cordova,mapquest,Javascript,Jquery,Ajax,Cordova,Mapquest,我正在使用jQuery从cordova onDeviceReady函数中的Mapquest加载脚本。但是,有一半的时间脚本加载不正确,无法使用函数 $.ajax({ url: "http://www.mapquestapi.com/sdk/leaflet/v2.s/mq-geocoding.js?key=sv99PLA3H8jGWSa1a097UKewBWrNWLWN", dataType: 'script', success: function(){alert('

我正在使用jQuery从cordova onDeviceReady函数中的Mapquest加载脚本。但是,有一半的时间脚本加载不正确,无法使用函数

   $.ajax({
    url: "http://www.mapquestapi.com/sdk/leaflet/v2.s/mq-geocoding.js?key=sv99PLA3H8jGWSa1a097UKewBWrNWLWN",
    dataType: 'script',
    success: function(){alert('hello')},
    async: false
  });

我是否可以更改任何内容以确保脚本始终正确加载?脚本始终能够发出警报(“hello”),但即使如此,函数也不会始终正常工作。

您可以在不使用
$的情况下动态加载脚本。getScript
函数如下所示:

function loadScript ( src, callback )
{
    var script = document.createElement ( 'script' );
    script.type = 'text/javascript';
    script.async = true;
    script.onerror = function ( err )
    {
        throw new URIError('The script ' + err.target.src + ' is not accessible.');
    }

    if(callback && typeof callback == 'function')
        script.onload = callback;

    document.head.appendChild(script);
    script.src = src;
}
它所做的是:

  • 创建一个元素
  • 告诉浏览器应该异步加载,这样在加载时不会中断其余资源
  • 使用
    onerror
    onload
    事件提供脚本加载的反馈
  • 将脚本追加到,并设置
    src
    ,使其实际加载
  • 在您的情况下,您可以这样使用它:

    loadScript ( "http://www.mapquestapi.com/sdk/leaflet/v2.s/mq-geocoding.js?key=sv99PLA3H8jGWSa1a097UKewBWrNWLWN", function ( )
    {
        alert(1);
    } );
    
    兼容性
    请记住,async属性并非在所有浏览器上都有效:

    不要使用
    async:false
    。(在这里它甚至不起作用)但是,在从stackoverflow的一个用户那里读到另一个解决方案后,我尝试过,即使在更改之前,也存在同样的问题。问题是什么?问题是,有时我可以从脚本调用函数,但有时我不会。您是否尝试过包含标记并将回调附加到onLoad事件?