スクリプト有効でもnoscript要素の中身が表示されることはあり得る

新生銀行のサイト(www.shinseibank.com)にアクセスしてみると、

現在 JavaScriptがOFF に設定されています。新生銀行のすべての機能を使用するためには、JavaScriptの設定をONに変更してください。

との表示が。

言われるがままにJavaScriptを有効にして再度アクセス。が、相変わらず同じ文言が表示されます。しかも、 div や p などの開始タグ、終了タグもそのままに。

オリジナル画像
図1JavaScriptを有効にした時の新生銀行トップページ

そんなバカな、とソースを見て納得。noscript要素に対して、CSSで display: block; を指定しています。次のような感じで。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<title>スクリプト有効でもnoscriptの中身が見えてしまうかも</title>
<style type="text/css">
noscript {
  display: block;
}
</style>
</head>
<body>
<noscript>
<p>この文章が表示されるのはスクリプトが無効の環境のみ…とは限りません。</p>
</noscript>
</body>
</html>

手持ちのブラウザいくつかで試してみたところ、主要ブラウザではOpera(私は Opera 10 で確認)でのみ見られる症状のようですね。

この部分に限って言えば文法的に間違いがあるわけではないので、原因は単に制作者がOperaによる表示確認を怠ったことによるもの、でしょうね。

2010年11月8日追記この現象は当時の最新版である Opera 10.00 で確認したものですが、現在は修正され(10.50で?)、上記のコードにスクリプト有効設定でアクセスしてもnoscript内の文言は表示されません。