IEでのフラッシュアップローダー(メディアアップロード機能)の不具合を修正する

WordPress 2.5が出て2週間が経つが、IE(インターネットエクスプローラ)でのメディアアップロード機能の不具合、特にフラッシュアップローダーが実行されない、という不具合が見つかっている。WordPress 2.5.1で修正される予定だが、すでにパッチが出ており、該当ファイルを修正することでフラッシュアップローダーを正常に実行させることができる。

ファイルの修正は2か所行う必要がある。/wp-admin/includes/media.phpの817行目のdebug: false,,(カンマ)を取り除く。

 
             debug: false  
         });  
     $("#flash-browse-button").bind( "click", function(){swfu.selectFiles();});  

また、/wp-includes/js/swfupload/handlers.jsの99行目の.animate({minHeight:0,height:36,}, 400, null, function(){jQuery(this).children(‘.describe’).remove()}),(カンマ)を取り除こう。

jQuery('#media-item-' + this.id).children('.describe').css({backgroundColor:'#fff'}).end()  
             .animate({backgroundColor:'#ffc0c0'}, {queue:false,duration:50})  
             .animate({minHeight:0,height:36}, 400, null, function(){jQuery(this).children('.describe').remove()})  
             .animate({backgroundColor:'#fff'}, 400)  
             .animate({height:0}, 800, null, function(){jQuery(this).remove();updateMediaForm();});  

少しわかりにくいかもしれないが、不必要なカンマをとる必要があるということだ。パッチを充てるなり、ファイルを置き換えるなり、直接修正するなりして、フラッシュアップローダーをIEでも使えるようにしよう。ファイルの更新後はブラウザのキャッシュをリフレッシュして置いた方がいい。JavaScriptがキャッシュに残っているかもしれないからだ。

プラグインの干渉が生じる場合も
フラッシュアップローダーの不具合に加えて、メディアアップロード機能に関してもう一つ不具合が発生するのが確認できた。これは一部のプラグイン(jQueryを使用しているものか)のJavaScriptが干渉して、メディア挿入用のボタンなどが表示されないという問題だ。フォーラムではWP-Amazonが問題であったと書かれているが、その他にも該当するプラグインがあるようだ。もし同じ症状に出くわしたら、プラグインを一つずつ停止してどのプラグインが原因となるか突き止めるといいだろう。

不具合修正前はIEでは以下のようなファイルアップローダーとなる。以下の例では、ファイルの選択、ギャラリー、メディアライブラリーなどのメニューも表示されていない。これは一部のプラグインの干渉によるもの。
フラッシュアップローダーが正常に読み込まれていない状態

以下は修正後。このようにきちんと表示され、ファイルがきちんとフラッシュでリアルタイムにアップロードされ、投稿画面に挿入できるか確認しよう。
フラッシュアップローダー、メニューともに正常に読み込まれている状態

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

«
»