0

Safari で HTML 5 のドラッグ アンド ドロップ機能を使用すると、かなり奇妙な動作が発生します。

私のコードは次のようになります。

handleFiles = function (files, e) {
    // Traverse throught all files and check if uploaded file type is image 
    var imageType = /image.*/;
    var file = files[0];
    // check file type
    if (!file.type.match(imageType)) {
        alert("File \"" + file.name + "\" is not a valid image file. ");
        return false;
    }
    // check file size
    if (parseInt(file.size / 1024) > 2050) {
        alert("File \"" + file.name + "\" is too big.");
        return false;
    }
   uploadFile(file);
};

uploadFile = function (file) {
    xhr = new XMLHttpRequest();
    xhr.open("post", "fileuploadhandler.ext", true);

    xhr.upload.addEventListener("progress", function (event) {            
        if (event.lengthComputable) {
            $("#progress").css("width", (event.loaded / event.total) * 100 + "%");
            $(".percents").html(" " + ((event.loaded / event.total) * 100).toFixed() + "%");
            $(".up-done").html((parseInt(event.loaded / 1024)).toFixed(0));
        } else {
            alert("Failed to compute file upload length");
        }
    }, false);

    xhr.onreadystatechange = function (oEvent) {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
                logAction(oEvent);
                $("#progress").css("width", "100%");
                $(".percents").html("100%");
                $(".up-done").html((parseInt(file.size / 1024)).toFixed(0));
                fileUploadedComplete(true, oEvent);
            } else {
                fileUploadedComplete(false, oEvent);
                alert("Error" + xhr.statusText);
            }
        }
    };

    // Set headers
    xhr.setRequestHeader("Content-Type", "multipart/form-data");
    xhr.setRequestHeader("X-File-Name", file.name);
    xhr.setRequestHeader("X-File-Size", file.fileSize);
    xhr.setRequestHeader("X-File-Type", file.type);

    // Send the file (doh)
    xhr.send(file);
};

これは Chrome と Firefox で問題なく動作します。しかし、Sarafi で次の奇妙な問題が発生しています。

どんな助けでも大歓迎です!

一番、

部族84

4

1 に答える 1

0

OS X の Safari でエラーを再現できません。

おそらく、問題は Windows の Safari に関連しています。おそらく、Windows で Safari をテストするのは最善の方法ではありません。

これが実際の JSFiddle です: http://jsfiddle.net/wh3E5/

できます

于 2012-08-20T23:08:18.667 に答える