![](/img/trans.png)
[英]jQuery IF statement (Only if a web browser on a desktop) not a mobile device / iPad
[英]jQuery when, then executing in browser but not on mobile device?
以下代碼段:
$.ajax({
url: 'actions.xml',
cache: false,
dataType: 'xml'
}).done(function(data) {
$(data).find('script').each(function() {
deferreds.push($.ajax({
url: $(this).text(),
dataType: 'script'
}));
});
$.when.apply($, deferreds).then(function() {
$('.preloader').fadeOut();
...
});
});
在瀏覽器上,此代碼可以正常執行。 預加載器逐漸消失,一切都很好。 在通過cordova進行的移動項目中,出現問題。 $.when.apply
部分似乎沒有執行。 預加載器永遠不會褪色,因此該應用無法正常工作。 有誰知道,為什么會這樣?
deferreds數組的值與瀏覽器中的值相同。 我通過alert(JSON.stringify(deferreds));
進行了測試alert(JSON.stringify(deferreds));
我已經通過設置一些警報解決了這個問題,並且可能會歸結為這個特定問題。 此時肯定會崩潰。
我必須完成今天要完成的任務,並且嘗試了各種不同的操作,例如設置超時,將其他功能放入函數等,以解決此問題,但是似乎沒有任何效果,也許專家可以在兩秒鍾內找到解決方案。
您可以避免同時發送太多請求,但使用這種邏輯一個接一個地發送:
$.ajax({
url: 'actions.xml',
cache: false,
dataType: 'xml'
}).done(function (data) {
var queue = $.Deferred().resolve();
$(data).find('script').map(function () {
return $(this).text()
}).get().forEach(function (url) {
queue = queue.then(function () {
return $.ajax({
url: url,
dataType: 'script'
}).promise();
})
});
});
請注意,也許您的問題僅僅是因為IOS模擬器,您應該在IOS設備上測試原始代碼(如果尚未完成),然后查看是否仍然存在相同的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.