• SyntaxHighlighter + jQuery 1.7.1 + IE で JavaScript エラー

    SyntaxHighlighter

    SyntaxHighlighter を jQuery 1.7.1 と組み合わせて使用すると Internet Explorer で JavaScript エラーが発生する。問題が修正された jQuery 1.7.2 にアップデートするか、問題の発生しない jQuery 1.7 以前のバージョンに戻すと解決する。

    ※ WordPress の場合は jQuery 1.7.1 は WordPress 3.3.x に、jQuery 1.7.2 は WordPress 3.4.x に同梱されている。

    経緯など

    先日作成した ThickBox の使い方ページを Internet Explorer で動作確認したら ThickBox が動作しないことが判明。エラーメッセージをチェックすると jquery.js で次のような JavaScript エラーが発生していた。

    ‘null’ は Null または オブジェクトではありません。(‘null’ is null or not an object)

    原因を絞り込んでいくとどうやら SyntaxHighlighter Evolved によってエラーが発生している模様。早速情報を探してみると次のような情報を発見した。(日本語の情報は見つからず)

    要約すると「SyntaxHighlighter などが利用する XRegExp ライブラリを jQuery 1.7.1 と組み合わせて使用すると全てのバージョンの Internet Explorer で JavaScript エラーが発生する」というもの。この問題は jQuery 1.7.1 より前のバージョンでは発生せず jQuery 1.7.2 で修正された。

    jQuery 1.7.1 は WordPress 3.3.x に同梱されているため、半年ぐらい前から発生していたエラーのはずだが、SyntaxHighlighter によるコードのハイライトは特に問題なく行われていたため、今まで問題に気付かなかったと思われる。

    対策としては、ざっと次のようなものが考えられる。

    • jQuery 1.7.2 にアップデートする
    • jQuery 1.7 以前のバージョンに戻す (非推奨)
    • WordPress の場合は WordPress 3.4.x にアップグレードする (要バックアップ)
    • SyntaxHighlighter の shCore.js を改変する

    付録:WordPress の同梱 jQuery バージョン一覧

    WordPress バージョン jQuery バージョン
    WordPress 2.6 – 2.7.1 jQuery 1.2.6
    WordPress 2.8 – 2.9.2 jQuery 1.3.2
    WordPress 3.0 – 3.0.6 jQuery 1.4.2
    WordPress 3.1 – 3.1.4 jQuery 1.4.4
    WordPress 3.2 – 3.2.1 jQuery 1.6.1
    WordPress 3.3 – 3.3.3 jQuery 1.7.1
    WordPress 3.4 – 3.4.1 jQuery 1.7.2
    Post Tagged with

コメントを残す

メールアドレスが公開されることはありません。