2010年6月10日

【WordPressネタ】Flutter PluginがIE8で動かない件


Internet Explorer 8 (以下 IE8 )、いろいろと困ったチャンな動きをしてくれますね。

今回問題になったのは、WordPress の CMS プラグイン「 Flutter 」。

Flutterには Edit In Place ( EIP ) という機能があって、投稿の内容を「表」の画面から編集できます。

WordPressを会員サイト構築に使う場合、会員といえども管理画面は使わせたくない。
かといって、いちいち会員向けの編集画面を作るとなると、工数がかさんでしまう。
プラグインで一般会員の自由な記事編集が可能になれば、とても便利。
・・・というのが、 EIP の機能なわけですね。

この EIP 機能、IE8 では完全には動作しません。
マルチラインテキストの要素で編集が可能にならず、 prototype.js の 2216 行目でエラーになってしまいます。
これは、 editnplace.js で実行されている setStyle メソッドが、 IE8 に対応できていないせいです。

※参考
Prototype.js, setStyle, and IE not working together

解決方法は上記の参考サイトにありますが、 setStyle メソッド実行時に、ちょっと呼び出し方を変えるだけです。
こんな感じ。

var panel = $(this.panelID);
Element.setStyle(panel, {display: "", top:panel_top+"px",left:elementLeft+"px"});

editnplace.js 中、setStyle メソッドは4箇所ほどで実行されてます。

あまりちゃんと検証してませんが、動かない箇所をひとつずつ修正して潰していくと、とりあえずまともに動くようにはなってくれそうです。


[社長ブログ]