5

$(function() { ... });本体内に単純なjavascript関数があります

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%");
      });

および 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>

エラーは次の図に示されています。 ここに画像の説明を入力

http://i.imgur.com/5t0sT.jpg (フルサイズで表示)

ファイルフィルターに問題があることがわかりました。PLUpload.com の例を IE8 で実行すると、Flash ランタイムで問題なく動作します。

他のブラウザでは、私のアップローダは問題なく動作します。また、すべてのブラウザー (IE8、FF9、Chrome 16) 用の最新バージョンの Flash をインストールしましたが、問題は IE8 で発生します。

visibility:hidden問題修正:またはdisplay:noneプロパティを持つ div にアップローダ オブジェクトを挿入しないでください。

4

5 に答える 5

5

私と同じ問題を抱えているすべての人のために:

次のHTMLコードがありました

<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>

クラスcontainerはダイアログとして作成されました

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

DIV は最初は非表示になっていることがわかっているためdispaly:none(もちろん、ダイアログ オブジェクトの新しいオプションとして設定できautoOpen:falseます)、スタイルを削除します。

IE8 (おそらくそれ以前とそれ以降のバージョン) では、アップローダが非表示になっているとインスタンス化できませんdiv。(上記のエラーを返します)

Chrome と Firefox (Opera ではこの問題をテストしていません) では問題なく動作します。

したがって、私のアドバイスは、隠しブロックを避けることです (モーダル ダイアログを作成したい場合でも)。

display:noneその div からスタイルとオブジェクトを削除したdialogところ、IE8 で非常にうまく機能するようになりました。

なんで ?Firefox や Chrome では正常にインスタンスが作成されたのに、IE ではページの起動時にオブジェクトのインスタンスが作成されない理由がわかりません。

于 2012-01-10T06:26:18.987 に答える
2

div が表示されたら、次の操作を行います。

uploader.refresh();

私は自分のページでテストを行いました。

于 2013-02-05T08:15:17.263 に答える
1

これも問題を解決しました:

#pickfiles{
    display:block;
}

またはこれ:

$('#pickfiles').on("mouseover",function(){
                $(".plupload.flash").css({
                    left:$('#pickfiles').offset().left+'px',
                    top:$('#pickfiles').offset().top+'px'
                    });
                });
于 2012-05-14T15:42:19.463 に答える
-1

システムに Microsoft Silverlight をインストールします。これで問題は解決します。また、ユーザーに Silverlight をインストールするようメッセージを表示することを忘れないでください。

于 2013-06-19T10:27:15.637 に答える