倉金家ホームページ趣味の部屋/ホームページ余話
| ||||||||||||||||||||||||
まずはフレームに関して。 今のところHTML5では旧来のいわゆるフレームタグ(frameset,frameなどのタグ)は廃止され、使用禁止ということになるようだ。(禁止という表現は正しくないかもしれないが、仕様から抹殺されるとすれば実質的にはそういうことだろから、以下禁止と表現。) もしそうなれば、世の中べたページのブログばやりだしホームページ作成ソフトもいずれ従来のフレームはサポートしなくなるだろうから、仮にHTML5でも使えるインラインフレーム(iframe)を使うにしてもプロかそれに準ずる技術を持った人か、あるいは私のような暇人でないとフレームページなどはつくれなくなってしまう。 うまく使えば人間にはとても読みやすいページを作れるにもかかわらず非常に残念なことだ。 このサイトでは左に記事のタイトルとその記事へのリンク、右に記事のページを従来からフレームを使って表示している。これが一番わかりやすく、見やすいように思う。 さらにはこのサイト→ふいちゃんの中国日記 のようにページ数が多くなると(なんと3000ページ越え)、見やすさと作成・管理の容易さも含めてこれ以上いい方法が思い浮かばない。 ナビのMENU(INDEX)部分だけを一つのページにまとめることでMENU部分ひいてはサイト全体の制御がとてもやりやすくなる。両方を同一ページに入れ込んだらとてもこうはいかない。 さらには統一的にサイトの中にさらにサイトを構築したり、昔の単独ページや表示法の全く異なるページを自由に取り込んだりと、サイト構築に資する自由度のメリットも大きい。 ときにHTML5では従来のフレーム(frameset+frame)は実際どう表示されるのだろうか? | ||||||||||||||||||||||||
| ||||||||||||||||||||||||
じゃあどうしょうかということで考えたら、いくつかの案が浮かんだ。
| ||||||||||||||||||||||||
で、ちょっと考えてみる。
| ||||||||||||||||||||||||
| ||||||||||||||||||||||||
といったところだが、どれで対応するかを決める前に、なぜHTML5でフレームが禁止されたのかとその対策、対応をちょっとは考えてみる必要もあるのではないだろうか。 言われていることは、 ①ユーザビリティーが悪い ②検索エンジンとの相性が悪い というのがもっとも大きい理由のようだ。 | ||||||||||||||||||||||||
①ユーザビリティーが悪い? ...これについては、はっきり言ってもっともなことだ。
思えば昔フレームが使えるようになった頃、皆こぞって必要のない部分にまで過度にフレームを使い、さらにはnoframesタグでフレーム非対応のブラウザでも同等の内容を取得できるようにしておくべきところに多くの人の入れた言葉が、「フレームの使えないブラウザではご覧になれません」... これでは禁止になるのはしかたないなあ。…実は自分も初期の頃見様見まねでやってしまっていた! 私はそのころちょうどパソコンを買い換えたからこの被害にはあわなかったが、そうでなければきっと腹がたったろう。いまでも時折あるようだ。
| ||||||||||||||||||||||||
また、フレーム間制御でページを切り替えたりするとその情報は(やりようによっては)アドレスバーのURLには反映されず、その場合ブックマークしても必ずそのページに戻れるとは限らない。 ただしこれはフレームを使うせいだと勘違いしてる人も多いようだが、同じURLに対して内容の変化する、いわゆる動的なページでは常に起こりうる現象で、要は運用の問題。フレームでは実はどちらでも自由にできる。 フレームを使ってないブログでも検索サイトから行ったらその記事は古いためか、すでに表示されず、タグも付けられておらず、検索オプションもないので記事を見つけられないということだってよくある。 必要ならトップページから書き変えてアドレスバーにページ情報を反映させればいいだけだが、あるページだけでなくサイトのトップから見てほしいなどでわざとページ情報を隠したい場合などもあり痛し痒しといったところ。(このサイトはどちらにでも簡単に切替できるようになっており、最近記事数が増えたので表示するようにした。) よって、フレーム(あるいはこれにに類する表示)を使うとしても、 フレーム表示可能なブラウザに対してのみフレームを使って表示する。 なるべくページURLを表に出すようにする。 ということで全く問題にはならないだろう。 | ||||||||||||||||||||||||
②検索エンジンとの相性が悪い?? ...おそらくこれはフレームが出たての頃の話で、今の主要な検索エンジンはフレームにも対応してるようだ。(検索エンジンを甘くみてはいけない。)
でももしフレーム内の記事内容がページそのものと一体とはみなされないとすれば検索上少し不利なのかもしれない。これを相性が悪いと言うなら確かにそうだが。 しかしながらフレームを使う前提でナビページと記事ページをしっかり分離しておいた方がちょっとした工夫でフレーム非対応のブラウザや検索エンジンにも読みやすいように個別にも表示できるので、全く問題にはならないか、むしろ有利だと思う。(アクセスの判定と表示の振分 参照) 現にこのサイトにくる人のほとんど(99.9%以上)は検索サイトからだし、検索サイトにはなぜだか意外と高順位にランクされていたりもする。 | ||||||||||||||||||||||||
私の見解では過去の経験と実績もふまえ、①の対応とあわせてこれも全く問題にはならない。
→ 検索サイトに上位表示してもらう 参照。 …2012.7.24記事追加 (2016.2.7 追記) 最近のgooglebotはjavascriptで書いたHTML5用のこのフレームページを読んで中の記事にしっかりアクセスしてきます。少なくともGoogle検索に関してはフレームを使ったから、あるいはjavascriptを使ったから検索されないなどという心配はしなくていいようです。もっともGoogleはブラウザだって作ってるんだから別段不思議でもないか。最近の検索エンジンの進歩はすごいな。 一方MSIE6とかMSIE8とかを騙っている得体のしれない情報収集ロボットは相変わらず中の記事にはアクセスできてはいません。 さらに言えばホームページは本来人間が見るべきためのもので、それを犠牲にして人間より先に検索ロボットが読みやすいようにだなんて本末顛倒のようにも思うし、はたまた世の中のすべての情報を集めようという某国情報収集機関の思惑が働いてるのではなどと勘ぐったりもしてしまう。 | ||||||||||||||||||||||||
| ||||||||||||||||||||||||
| ||||||||||||||||||||||||
...で、 で き た ぁ !
!!成果発表~!! すでにこのページがそのHTML5+インラインフレーム、すなわち<iframe>タグを使って表示されているかもしれません。 かもしれませんと言ったのは、今のところ動作が確認できたバージョン以上のPC用ブラウザに対してのみこの表示をしているためで、それ以外は従来のHTML4によるフレームで表示させています。(さらに携帯端末では全くフレームを使わない表示になっていると思います。…携帯もってないので確認できない。) 確認したブラウザは、PC用の、MSIE 7, Firefox3, Chrome9, Opera9, Safari5, SeaMonkey2, Lunascape6, Sleipnir2。 <iframe>は昔からあるのでこれ以下のバージョンでも問題ないのかもしれませんが、残念なことに古いバージョンのブラウザがないためもう動作確認ができないのでした。 | ||||||||||||||||||||||||
ソースコード公開 「HTML5フレーム禁止対抗スクリプト」と称して、ソースコードを公開いたします。
...とは言ってもブラウザでトップページのソースを見ればわかるんだけどね。 ただこのサイト特有の設定などは除いて、ついでなので上下分割版もつくってさらに各エンコーディングにも変換して使いやすくしておきました。 左右版と上下版を組み合わせて、フレームの中にフレームを入れていけばいかようにも分割はできるとは思います。(ここでテストできます。) T型分割版やΠ型分割版も作ることは可能と思いますが、特に使う気もないのでやりません。それに単純な縦横の分割を組み合わせた方が動的な対応もできて良いような気もしますし、最近のパソコンのディスプレーはテレビの画面に合わせてかやたら横長になっているようなので左右分割版で充分だと思います。 ...というわけで、 | ||||||||||||||||||||||||
従来のフレームにはない余計な機能をつけたりしたので少し長くなってはいますが。 コードテキストをそのまま出力します。 文字化けしましたら文字エンコーディングUTF-8を指定してください。 ブラウザあるいはパソコンの改行コードの違い?により改行されない場合があるようです。 その場合ソースを表示すればちゃんと見れるかもしれません。 | ||||||||||||||||||||||||
| ||||||||||||||||||||||||
2011年3月10日 V1.00 …いちおう動作確認した最初のバージョン。
〜 この間ブラウザによる違い修正、バグ修正、改良など。〜 なるべく最新バージョンを掲載しておくようにします。 2015年7月7日 V1.50(TANABATA Version) | ||||||||||||||||||||||||
ダウンロードするなら右クリックで「対象をファイルに保存する」「名前をつけてリンク先を保存」などでファイルを保存する指定をすればダウンロードできます。(Windowsの場合です。他はそれなりに。) あるいはダウンロードの小部屋からダウンロードできます。他のお薦めダウンロードも一緒に置いてあります。 | ||||||||||||||||||||||||
使う際には慣例により名前をindex.htmlあるいはindex5.htmlなどと変え、必要な設定をした上でサイトに設置してください。 | ||||||||||||||||||||||||
簡単にメリット、デメリットをまとめておきます。
といったところでしょうか。 | ||||||||||||||||||||||||
試してみて良かったら、あるいは改良したよなどの投稿をいただけるとうれしいです。
なお私はjavascriptは全く得意ではありませんので、もしjavascriptがお得意でしたらご自分でチャレンジしてみるのもよろしいかと。よりエレガントなのが作れると思います。たいして難しくはありませんでしたが各ブラウザでテスト、確認、調整するのにはけっこう時間と労力をくいました。 | ||||||||||||||||||||||||
(追記 2012.7)
divとjavascrriptを使ってもほぼ同じようなことができますが、iframeを使うよりだいぶ複雑になりそうです。(htmlファイル名を指定してあとはブラウザ任せというわけにはいかない。) 例として私も使ってるWebShareというファイルブラウザソフトがdivとjavascriptを使ってフレームのような画面分割をしています。ソースを見ればわかりますがトップでは単に入れ物としてのdivのコンテナを定義しているだけで、その中身はほとんどphpとjavascriptで書き出しています。(さまざまなユーザアクションには応えられるがとてもたいへん。でもまさにphpとjavascriptプログラムの宝庫です。) 参考: → ファイルブラウザWebShare | ||||||||||||||||||||||||
(追記 2015.7)
久々に擬似フレームプログラムを改良。新しいのを掲載しました。改良したのは以下のような点。
| ||||||||||||||||||||||||