5

我有一個使用XMLHttpRequest 2將文件上傳到Transloadit(文件處理服務)的工作文件上載表單。在Firefox和Chrome中,進度事件被正確觸發,無論是Desktop還是Android。但Android(4.0)股票瀏覽器不會觸發這些事件,因此我的進度條不適用於我的網站的用戶。從3.0開始,XHR2和ProgressEvent被認爲支持Android,所以我不知道發生了什麼。在Android股票瀏覽器中沒有XMLHttpRequest 2進度

的代碼是:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title>Upload test</title> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> 
    <link href="/assets/application.css" media="all" rel="stylesheet" type="text/css" /> <!-- twitter bootstrap --> 
    <script type="text/javascript"> 

    var onprogress = function(e) 
    { 
     var $status = $('.status'); 
     $status.text('onprogress: ' + (e.loaded/e.total) * 75 + '<br>'); 

     if (e.lengthComputable) { 
     setProgress((e.loaded/e.total) * 75); 
     } 
    } 

    var setProgress = function(percent) { 
     percent = percent+'%'; 
     var $progressBar = $('.progress .bar'); 
     var $status = $('.status'); 
     $progressBar.css('width', percent); 
     $progressBar.text(percent); 
     $status.text(percent); 
    }; 

    var createAttachment = function(file) { 
     var params = {"blocking": true,"auth":{"key":"XXX"},"template_id":"XXX"} 
     var xhr = new XMLHttpRequest(); 
     var data = new FormData(); 

     data.append('params', JSON.stringify(params)); 
     data.append('attachment[file]', file); 

     var evtReceiver = xhr.upload || xhr; 
     evtReceiver.addEventListener('progress', onprogress, false); 
     xhr.onload = function(e) { 
     var resp = JSON.parse(e.target.response) 
     $('.image').append($('<img src="' + resp.results['android-thumb'][0].url + '">')) 
     setProgress(100); 
     }; 

     xhr.open('POST', 'http://api2.transloadit.com/assemblies', true); 
     xhr.send(data); 

    }; 


    $(document).ready(function() { 
     $('input[type=file]').on('change', function(event) { 
     createAttachment(event.target.files[0]); 
     }); 
    }); 
    </script> 

</head> 

<body> 

<input type="file" name="my_file"> 

<div class="progress progress-striped active"> 
    <div class="bar" style="width: 0;"></div> 
</div> 

<div class="status"></div> 

<div class="image"></div> 

</body> 
</html> 
+0

[從PHP腳本獲取XMLHttpRequest的進展(的可能的複製http://stackoverflow.com/questions/3990933/getting-xmlhttprequest-progress-from -php-script) –

回答

0

在Android瀏覽器的鉻版本所支持的正在進行中的事件:

的Android 4.4(API級19)引入了web視圖的新版本是基於鉻。此更改將升級WebView性能和對HTML5,CSS3和JavaScript的標準支持以匹配最新的Web瀏覽器。在Android 4.4及更高版本上運行時,使用WebView的任何應用程序都將繼承這些升級。

升級到4.4以使用此API。

參考

+0

我的手機已經在Android 6.0.1上。問題不在於我,而在於我的網站用戶。 –

相關問題