簡體   English   中英

Javascript進度條無法在Chrome中運行,在Firefox中運行良好

[英]Javascript progress bar not working in Chrome, fine in firefox

在我的應用程序中使用文件導入數據時,使用進度條時遇到問題

這在Firefox中運行良好,但在Chrome中,進度條僅從0%到100%。

我選擇用異步錯誤來jquery ajax,因為有30000行的文件正在用完資源

Thanx的幫助

使用Javascript:

function processCsvFile(url) {
    $('#progressBarBulkImportDiv').addClass('show').removeClass('hide');
    $('#fileSelectDiv').addClass('hide');
    $('#fileUploadInfos').addClass('hide');
    $('#upload').addClass('hide');
    document.getElementById('progressBarBulkImport').innerHTML = '0%';
    var fileUpload = document.getElementById("fileUpload");
    var regex = /^([a-zA-Z0-9\s_\\.\-:])+(.csv|.txt)$/;
    if (regex.test(fileUpload.value.toLowerCase())) {
        var reader = new FileReader();
        reader.onload = function (e) {
            var rows = e.target.result.split("\n");
            console.log(rows);
            var totalRows = rows.length - 1;
            localStorage.setItem("totalRows", totalRows);
            var successRows = 0;
            var currentRow = 0;
            for (var i = 1; i < rows.length; i++) {
                console.log("line" + i);
                var cells = rows[i].replace(/[/]/g, "-5-8-3-");
                urlajax = url + cells;
                $.ajax({
                    url: urlajax,
                    async: false,
                    success: function (result) {
                        console.log("etape 4");
                        currentRow = parseInt(currentRow) + parseInt('1');
                        var reglede3 = Math.round(parseInt(currentRow) * parseInt('100') / parseInt(totalRows)).toString();
                        console.log(reglede3 + '%');
                        document.getElementById('progressBarBulkImport').innerHTML = reglede3 + '%';
                        $('#progressBarBulkImport').width(reglede3+'%').attr('aria-valuenow', reglede3);
                        successRows = parseInt(successRows) + parseInt(result);
                        if (parseInt(currentRow) == parseInt(totalRows))
                        {
                            console.log("5");
                            localStorage.setItem("successRows",successRows);
                            $('#resultInsertFile').addClass('show').removeClass('hide');
                            document.getElementById('resultInsertFile').innerHTML = localStorage.getItem("successRows")+"/"+localStorage.getItem("totalRows")+' correctement inséré(s)';
                            $('#progressBarBulkImport').removeClass('active');
                        }
                    }
                });
            }
        };
        reader.readAsText(fileUpload.files[0]);

    } else {
        alert("Merci de charger un CSV valide");
    }
}

Html:

<form action="#" method="post" class="form-horizontal">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                <h4 class="modal-title font_exo_2" id="myModalLabel">Import Assets SCOPE GP via .csv</h4>
            </div>
            <div class="modal-body">
                <div class="main_container">
                    <input type="hidden" name="formAction" value="addViaFile">
                    <div class="form-group paddingViaFile">
                        <div class="input-group" id="fileSelectDiv">
                            <span class="input-group-btn">
                                <span class="btn btn-primary btn-file">
                                    Parcourir&hellip; <input type="file" id="fileUpload" accept=".csv">
                                </span>
                            </span>
                            <input type="text" class="form-control" readonly>
                        </div>
                        <span class="help-block" id="fileUploadInfos">
                            Télécharger un fichier .csv vide au bon format <a href="{{ asset('examples/scope_import_example.csv') }}" class="alert-link">Ici</a>
                        </span>
                        <div class="progress hide" id="progressBarBulkImportDiv">
                            <div class="progress-bar active progress-bar-success progress-bar-striped" id="progressBarBulkImport" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="min-width: 2em; width: 2%">
                            </div>
                        </div>
                        <div class="hide text-center" id="resultInsertFile"></div>
                    </div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-warning" data-dismiss="modal">Fermer</button>
                <button type="button" class="btn btn-success" id="upload" onclick="processCsvFile('/ajax/insert/scope_import/');">Envoyer</button>
            </div>
            </form>

異步“false”的控制台日志:

iam.js:92 line1
iam.js:99 etape 4
iam.js:102 0%
iam.js:92 line2
iam.js:99 etape 4
iam.js:102 0%
iam.js:92 line3
iam.js:99 etape 4
iam.js:102 0%
iam.js:92 line4
iam.js:99 etape 4
iam.js:102 0%
iam.js:92 line5
iam.js:99 etape 4
iam.js:102 0%
iam.js:92 line6
iam.js:99 etape 4
iam.js:102 1%
iam.js:92 line7
iam.js:99 etape 4
iam.js:102 1%
iam.js:92 line8

異步“true”的控制台日志:

line1 iam.js:92:17
line2 iam.js:92:17
line3 iam.js:92:17
lineXXX iam.js:92:17
lineXXX iam.js:92:17
line30587 iam.js:92:17

etape 4 iam.js:98:25
0% iam.js:101:25
etape 4 iam.js:98:25
0% iam.js:101:25
etape 4 iam.js:98:25
0% iam.js:101:25
etape 4 iam.js:98:25
0% iam.js:101:25
etape 4 iam.js:98:25
0% iam.js:101:25
etape 4 iam.js:98:25
1% iam.js:101:25
etape 4 iam.js:98:25
1% iam.js:101:25
etape 4 iam.js:98:25
1% iam.js:101:25
etape 4 iam.js:98:25
1% iam.js:101:25
etape 4 iam.js:98:25
1% iam.js:101:25
etape 4 iam.js:98:25
1% iam.js:101:25

奇怪的是,如果我補充:

if (reglede3 % 5 === 0 ) {
                        document.getElementById('progressBarBulkImport').innerHTML = reglede3 + '%';
                        $('#progressBarBulkImport').width(reglede3+'%').attr('aria-valuenow', reglede3);
                    }

這工作正常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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