我正在使用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'),但即使这样,这些函数也无法始终正常工作。
答案 0 :(得分:-1)
您可以在没有$.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属性不适用于所有浏览器:http://caniuse.com/#feat=script-async