簡體   English   中英

何時使用jQuery,然后在瀏覽器中執行但不在移動設備上執行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM