プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
HTML、noscriptタグの挙動について。(非表示なのか未解釈なのか)
HTMLタグに「<noscript>~</noscript>」っていうタグがあるじゃないですか。

<noscript>JavaScriptを有効にしてください</noscript>

とか書いておくと、JavaScript無効時に表示されるアレです。

昨日お風呂に入っている時に、ふと気になりましてね。

JavaScriptを有効にしていた場合「<noscript>~</noscript>」タグの中身は
ブラウザさんによってどう扱われているんだろう(--?って。

中身自体の解釈は行っているけど非表示にしているのか、
あるいは完全に無視(解析すらしていない)のかどっちなんでしょ(--?

気になったら実験です。
早速、こんなのを用意して確認してみましたφ(--)

■test.html
<html>
<head></head>
<body>

hoge

<noscript>
    <iframe src="test_sub.php"></iframe>
</noscript>


</body>
</html>

■test_sub.php
<?php
    file_put_contents("hoge.txt", date('Y/m/d h:i:s'));
?>

「test.html」がメインです。
「<noscript>~</noscript>」タグの中に「<iframe>~</iframe>」タグを記述して
「test_sub.php」を呼び出しています。
「test_sub.php」の中では現在時刻をファイル「hoge.txt」に出力しています。

JavaScriptを有効にして「test.html」を表示した際に「hoge.txt」が作成されれば、

「test_sub.php」が動いている
  ↓
「<iframe>~</iframe>」の部分が有効になっている
  ↓
「<noscript>~</noscript>」の中もブラウザさんは解釈している

と判断できます。

一方、「hoge.txt」が作成されなければ

「test_sub.php」が動いていない
  ↓
「<iframe>~</iframe>」の部分が無視されている
  ↓
「<noscript>~</noscript>」の中をブラウザさんは見ない

と判断できるでしょう。

さぁ、どっちだ?!ヾ(`д´)ノ

結果(--)b

JavaScriptを有効にして「test.html」を表示した際には「hoge.txt」は作成されませんでした。
JavaScriptが有効なときには「<noscript>~</noscript>」の中は無視されるようです。

あれ?「<iframe>~</iframe>」って非表示だと動かないわけじゃないよね?と気になってので
以下のコードも動かしてみましたが、JavaScriptの有効・無効によらず「hoge.txt」が作成されました。

■test2.php
<html>
<head></head>
<body>

hoge

<div style="display: none;">
    <iframe src="test14_sub.php"></iframe>
</div>

</body>
</html>

うん、非表示でもiframeの中身が解釈されるのは予想通り。

というわけで、今回の結論は、

JavScriptが有効な場合「<noscript>~</noscript>」の中をブラウザは解釈しない

となりました。

ふむふむ(--)
ということは今回のサンプルを応用してあれやこれやとやれば、
JavaScriptを無効にしている人のアクセスログだけを取ることもできそうですね(--ゞ

まぁ「<noscript>~</noscript>」の中はごちゃごちゃさせない方が良いでしょうが、
苦肉の策としてはアリといえばアリかなぁ。。

取りあえず、完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● HTML・CSS  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事