SPREAD 3.0J for Web Forms + IE8で障害

凄く今更な環境ですが、ググっても全然ヒットしなかったので書いときます。
誰かの役に立てば、これ幸い。

一応、公式でSPREAD 3.0J SP2 (build 3.0.2028)でIE8に対応しました、となってるのだけど、実行するとクライアント側で"実装されていません fpspread.htc X行"というJavascriptエラーが発生してセル上のコマンドボタンなどが動作しなくなる問題でハマること1日。
今更サポートが終わってるSPREAD3.0のサポートは期待できないので、「どうしたもんかなー」と悩みながら問題を切り分けしてたら発生条件が解った。

  • FrozenColumnCountとかFrozenRowCountプロパティを指定している。
  • IE8のレンダリングがドキュメントモードが"IE8標準"となっていて、かつブラウザーモードが"IE8互換"になっている。

という条件が重なったときに該当のエラーが発生していた。開発者ツールからブラウザーモードを"IE8" に変更すると正しく動作するようになったため、"IE8互換"にしている原因を探すことに。

MSDN Blogs

上記blogの記事によると、IE8互換になる理由は以下のいずれかで、

  • metaタグかhttpヘッダのX-UA-CompatibleでEmulateIE8を指定されている。
  • [互換表示設定]で[互換表示に追加したWebサイト]に追加されている。
  • [互換表示設定]で[互換表示でイントラネットサイトを表示する]にチェックが入っていて、対象のサイトがイントラネット内に存在する。

今回は対象サイトが互換表示に追加されていたのが原因だったので、互換表示の対象から外すと意図したとおりに動作するようになった。
ドキュメントモードはmetaタグで開発者側がコントロールできるのだけど、ブラウザーモードのデフォルト状態をコントロールできないのは困るなあと思う。ここは利用者に互換表示設定から外して貰うより仕方が無いのだけど。