JavaScriptが数えるフレーム数JavaScriptが数えるフレームの数について助け合いの掲示板で質問をもらったのをきっかけに、JavaScriptの実験をしてみました。それほど多用したことがなかっただけに、あまり知らない分野でもあります。勉強も兼ねて色々調べてみたのですが、どうしても理解できなかったので、実験の結果だけ載せてみることにしました。(知っている方からの反応お待ちしてますm(__)mもともとの質問は、、、検索エンジンや他のページのリンクから飛んでくる場合、作成者が意図したフレーム構成になっていないことが多いですよね。使って、作成者が意図したフレームから見せることが出来るように、強制的にリダイレクトしたい、、、という内容です。(ちょっと前は、この逆で、他のサイトからフレームの中に取り込まれて表示されるのを避けるために、フレームで表示されたらフレームを破棄するようなスクリプトを作って・・・というリクエストが多かった気がします。その時々で流行があるのでしょう。)実際のスクリプトは下記のようなものです。表示する、というものです。iframeタグでインラインフレームが作られていた場合に問題が起こりました。使われているとうまく動かないのです。気をよくして、掲示板に「このように変更したら?」と提案してみました。そこまではよかったのですが、今度は、その質問された方がiframeを2つ使ったのです。変えたらしいのですが、そうすると、ジャンプしても、ジャンプした先で、またジャンプを繰り返す・・・よくわからない動きをする、という質問が来ました。カウントを検証するために、下記のようなスクリプトを書いて、その数を表示させてみました。するとどうでしょう、iframeの数がいくつになってもlengthは0のままです。language="JavaScript">document.write(top.frames.length);</script>個です。条件を満たして、ジャンプしてます。条件は満たす(1になっている)のに、表示は0。非常に疑問に思ったので、様々な条件でそのカウント数を調べてみたのが下です。関数などで呼び出される場合にはtop.frames.lengthはiframeの数を返す。document.writeなどで書き出された場合はボディータグの中ではiframeの数を返さないこの実験結果は「こちら(別窓)」で確認できます。