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箇所ほどで実行されてます。
あまりちゃんと検証してませんが、動かない箇所をひとつずつ修正して潰していくと、とりあえずまともに動くようにはなってくれそうです。