2012-01-04 42 views
5

tôi có chức năng javascript đơn giản bên trong cơ thể $(function() { ... });flash runtime không hoạt động trong IE8 sử dụng PLupload

var uploader = new plupload.Uploader({ 
     runtimes: 'html5,flash,silverlight', 
     browse_button: 'pickfiles', 
     container: 'uploader', 
     max_file_size: '20mb', 
     unique_names: true, 
     multiple_queues: false, 
     //drop_element: 'dropzone', 
     url: '/Home/Upload', 
     flash_swf_url: '../../../Scripts/upload/plupload.flash.swf', 
     silverlight_xap_url: '../../../Scripts/upload/plupload.silverlight.xap', 
     filters: [ 
       { title: "Image files", extensions: "jpg,gif,png" }, 
       { title: "Zip files", extensions: "zip" } 
      ], 
     chunk_size: '2mb', 
     resize: { width: 320, height: 240, quality: 90 } 
     }); 

     uploader.bind("Init", function (up, params) { 
     $("#runtime").html("<div>Current runtime: " + params.runtime + "</div>"); 
     }); 

     $("#uploadfiles").bind("click", function (e) { 
     uploader.start(); 
     e.preventDefault(); 
     }); 

     uploader.init(); 

     uploader.bind("FilesAdded", function (up, files) { 
     $.each(files, function (i, file) { 
      $('#runtime').append(
       '<div id="' + file.id + '">' + 
        file.name + ' (' + plupload.formatSize(file.size) + ') <b></b>' + 
      '</div>'); 
     }); 
     up.refresh(); 
     }); 

     uploader.bind("UploaderProgress", function (up, file) { 
     $("#" + file.id + " b").html(file.percent + "%"); 
     }); 

     uploader.bind("Error", function (up, file) { 
     $('#runtime').append("<div>Error: " + err.code + 
       ", Message: " + err.message + 
       (err.file ? ", File: " + err.file.name : "") + 
       "</div>"); 
     up.refresh(); 
     }); 

     uploader.bind("FileUploaded", function (up, file) { 
     $("#" + file.id + " b").html("100%"); 
     }); 

và HTML

<div class="container"> 
        <div>Logo: </div> 
        <div style="clear"></div> 
        <div id="uploader"> 
        <div id="runtime" class="right"> 
         No runtime was found ! 
        </div> 
        <div> 
         <a id="pickfiles" href="#">[Select files]</a> 
         <a id="uploadfiles" href="#">[Upload files]</a> 
        </div> 
        </div> 
       </div> 

Các lỗi được hiển thị trong hình sau: enter image description here

http://i.imgur.com/5t0sT.jpg (để xem kích thước đầy đủ)

Tôi thấy có vấn đề với bộ lọc tệp. Tôi chạy các ví dụ PLUpload.com trên IE8 và nó hoạt động tốt với thời gian chạy Flash.

Trên các trình duyệt khác, trình tải lên của tôi hoạt động hoàn hảo. Ngoài ra, tôi đã cài đặt phiên bản Flash mới nhất cho TẤT CẢ các trình duyệt (IE8, FF9, Chrome 16) nhưng sự cố vẫn tồn tại trong IE8.

ISSUE FIXED: không chèn đối tượng tải lên vào div có thuộc tính visibility:hidden hoặc display:none.

+0

Bạn có thể mô tả giải pháp tốt hơn không? Viết một câu trả lời để mọi người thấy rằng một giải pháp đã được tìm thấy? Tôi gặp lỗi tương tự, nhưng điều này không hiệu quả với tôi. – oma

Trả lời

5

Đối với tất cả những ai có cùng một vấn đề như tôi:

tôi đã sau HTML code

<div class="container" style="display:none"> 
        <div>Logo: </div> 
        <div style="clear"></div> 
        <div id="uploader"> 
        <div id="runtime" class="right"> 
         No runtime was found ! 
        </div> 
        <div> 
         <a id="pickfiles" href="#">[Select files]</a> 
         <a id="uploadfiles" href="#">[Upload files]</a> 
        </div> 
        </div> 
</div> 

Lớp container đã được tạo ra như thoại

$(function() 
{ 
$(".container").dialog({modal:true, width:400}); 
}); 

Như chúng ta đã biết rằng DIV bị ẩn ban đầu vì dispaly:none (tất nhiên, bạn có thể thiết lập autoOpen:false làm tùy chọn mới trong đối tượng hộp thoại) và loại bỏ phong cách.

Trong IE8 (có thể trong phiên bản trước đó và sau này) người tải lên không thể được khởi tạo tốt nếu div bị ẩn. (Trả về lỗi trên)

Trong Chrome và Firefox (Tôi không kiểm tra vấn đề này trong Opera) hoạt động tốt.

Vì vậy, lời khuyên của tôi là tránh khối ẩn (ngay cả khi bạn muốn tạo hộp thoại phương thức).

Tôi đã xóa kiểu display:none và đối tượng dialog khỏi div đó và hiện hoạt động rất tốt trong IE8.

Tại sao? Tôi không biết tại sao trong IE, thể hiện của đối tượng không được tạo khi khởi động trang, mặc dù trong Firefox và Chrome, cá thể được tạo ra bình thường.

1

này giải quyết vấn đề quá:

#pickfiles{ 
    display:block; 
} 

hay này:

$('#pickfiles').on("mouseover",function(){ 
       $(".plupload.flash").css({ 
        left:$('#pickfiles').offset().left+'px', 
        top:$('#pickfiles').offset().top+'px' 
        }); 
       }); 
2

sau khi div được hiển thị, thực hiện điều này:

uploader.refresh(); 

Tôi có kiểm tra trên trang của mình, đã làm việc!

-1

Cài đặt microsoft silverlight trên hệ thống của bạn. Điều đó sẽ giải quyết vấn đề và đừng quên gửi thông báo cho người dùng của bạn để cài đặt silverligth.

-1

Lỗi này giải quyết bằng cách:

Add "HTML4" để tính: "runtimes"

var uploader = new plupload.Uploader({ 
     runtimes : 'gears,html5,flash,silverlight,browserplus,**html4**', 
     browse_button : 'pickfiles_<? echo $tmpKey ?>', 
     container : 'container_<? echo $tmpKey ?>', 
     max_file_size : '30mb', 
     url : '/image/upload3', 
     flash_swf_url : '/plupload/js/plupload.flash.swf', 
     silverlight_xap_url : '/plupload/js/plupload.silverlight.xap', 
     filters : [ 
      {title : "Image files", extensions : "jpg,gif,png,jpeg"}, 
      {title : "Zip files", extensions : "zip"} 
     ], 
     unique_names:false, 
     multipart_params : { 
      "tmpPath" : "<? echo $tmpPath ?>", 
      "minWidth" : "<? if(isset($minWidth)) echo $minWidth; else echo 0; ?>", 
      "minHeight" : "<? if(isset($minHeight)) echo $minHeight; else echo 0; ?>" 
     } 
    // resize : {width : 390, height : 290, quality : 90} 
    }); 

Chúc may mắn cho bạn !!!

Các vấn đề liên quan