ブラウザに拠るjavascript実行環境の相違

ブログ上で javascript を実装するのは様々な制約がある上に、 記事毎に条件が異なったりとなかなか困難が多くて問題も出易いようです。 2011年4月24日の記事 他ブログ更新情報の自ブログへの表示 でブログのテンプレートに必要な外部 javascriptファイルを読み込ませる様に設定しました。 これは問題なく稼動し始めたのですが、 思わぬ処で問題が出た様です。

このブログはHamaZo(はまぞう)ブログシステムを利用しているのですが…

スポンサーリンク

このシステムに於いてはブログ執筆中途で、 内容を確かめられる様にプレビュー機能が設けられています。 通常の記事を書いている分には問題ないのですが、 javascript を記事内で走らせる場合に於いては、 それが上手く稼動しないと言う問題が発生してしまいました。

デバッグコンソールでのエラー表示は以下です。

Refused to execute a JavaScript script.
Source code of script found within request.
Uncaught TypeError: Cannot call method 'hasChildNodes' of null
HamaZoブログではプレビュー時にトップページのテンプレートを読み込んでいるようで、 そのテンプレートには特定のCSSセレクタが存在することを前提に書かれています。 どうもその hasChildNodes メソッドを適用しているCSSセレクタが存在しないことが原因のようです。

処がブラウザを変えればプレビューを閲覧するのは可能です。 問題があるのは Google Chrome であり、 Firefox では問題が発生しません。 Chromeでは上記のエラー発生時に javascript の実行を止めてしまいますが、 Firefoxではこのエラーに関してはスキップして 続きを走らせるようです。

今回はプレビューのみでブログ閲覧者は問題なく閲覧可能ですから、 大勢に影響は有りませんが、ブラウザ間で javascriptの実行環境が異なるのは困りものです。