HTML5 перетащить загрузить в новом окне - PullRequest
0 голосов
/ 01 декабря 2011

Я установил перетаскивание HTML5 на свой сайт.Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь загружает большой файл, он должен дождаться окончания загрузки, прежде чем переходить на другой сайт и использовать его.

Итак, я хотел бы разрешитьпользователь перетаскивает файлы на основной сайт, а затем автоматически открывает новое окно и начинает загрузку туда, чтобы они могли по-прежнему использовать оставшуюся часть сайта во время загрузки.У кого-нибудь есть совет и как это сделать или можно ли это сделать?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2012

Если ваше приложение представляет собой одностраничное приложение, веб-работники могут быть решением.

0 голосов
/ 02 декабря 2011

Вы должны быть в состоянии открыть новое окно, когда происходит событие удаления.Ниже приведен полный пример.

Сначала у нас есть область загрузки файла и события, которые обрабатывают перетаскивание:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<div id="fileUpload" style="height:200; width:200; border:1px solid #ddd;"><span id="lbl">Drag and drop file here...</span></div>

<script>
$(function() {
    $('#fileUpload').get(0).addEventListener("drop", upload, false);        
    $('#fileUpload').get(0).addEventListener("dragenter", noopHandler, false);
    $('#fileUpload').get(0).addEventListener("dragexit", noopHandler, false);
    $('#fileUpload').get(0).addEventListener("dragover", noopHandler, false);

    function noopHandler(e) {
        e.stopPropagation();
        e.preventDefault();
    }

    function upload(e) {
       e.stopPropagation();
       e.preventDefault();

       fileList = e.dataTransfer.files;
       var fileCount = fileList.length;

       // Only call the handler if 1 or more files was dropped.
       if (fileCount > 0) {
           window.open("upload.html");
       }
    }
});
</script>
</body>
</html>

Во всплывающем окне (upload.html),мы получаем файлы из родительского окна и начинаем загрузку:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<script>
    $(function() {
        var fileList = window.opener.fileList;

        var reader = new FileReader();     
        reader.onloadend = function(e) { alert("Uploaded"); }

        for (file in fileList) {
            // Upload
            reader.readAsDataURL(fileList[file]);
        }
    });
</script>
</body>
</html>

Попробуйте и, надеюсь, это поможет решить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...