TOP > Expression Web & FrontPage Users Forum
[リストへもどる]
一括表示
タイトルframeタグのtarget属性を排除したい
記事No411
投稿日: 2010/09/23(Thu) 12:26
投稿者月夜見命
はじめまして、こんにちわ。

本職はPGでWeb関連は疎く、いままでメモ帳でちまちま作っていましたが
MSDN Subscriptionを手に入れたのでExpression Studio 4 Ultimateを使い始めました。

さっそく新規作成でフレーム分割されたサイトを作っていこうとしたのですが、
IE8ではframeタグのtarget属性をサポートしていない、と非互換警告されてしまいました。

ページのプロパティで「標準のターゲットフレーム」を消してみたりコードで直接削除しても
即復活するのですが、これを抑止するにはどうすればよいのでしょうか…

以上よろしくお願いします。

タイトルRe: frameタグのtarget属性を排除したい
記事No412
投稿日: 2010/09/23(Thu) 12:43
投稿者wanichan
月夜革命さん、こんにちは。

まず、フレームを使ったWebページの作成自体やめた方がいいです。
フレームを作ること自体「エラー」となるわけです。
フレームページにはtarget属性が必要です。でないと機能しません。
しかし、そのtarget属性自体非推奨なので、フレームページは作るな、ということでしょう。

でも、IE8が出ているということは、DOCTYPE宣言が省略されている等の理由でセカンダリスキーマーとして解釈されているのではないでしょうか?
フレームページであると宣言すればいいと思います。

いずれにしても、できるだけフレームページではなく、単一のWebページを作ってください。
今日において、フレームを使ったWebページは一昔前のサイトという認識があるように思います。
すべてのWebページのデザインを統一するために、ダイナミックWebテンプレートの利用が便利です。

どうぞよろしくお願いいたします。

タイトルRe^2: frameタグのtarget属性を排除したい
記事No413
投稿日: 2010/09/23(Thu) 16:54
投稿者月夜見命
返信ありがとうございます。

フレーム自体使うなというのはわかりました。

ただ、それはさておきまだ不明点があるので後学のために続けさせてください。


>フレームページにはtarget属性が必要です。でないと機能しません。

フレームページというか、frameタグそのものの話ですよね?
(aタグで別ページに表示する場合はtarget必須なのはわかりますが)

frameタグについて詳しく調べてみましたが、「target属性が必須である」どころか
指定できる属性一覧に無かったりもします。

ですがExpressionは以下のようなコードを生成しています。

<!-- contents はまだ完成してません -->
<frameset cols="150,*">
        <frame name="contents">
        <frame name="main" src="frame/top.html" target="_self">
</frameset>


これはいったい…???という状態です。
(無くても表示上問題がなかったので尚更よくわからなくなってしまい)

以上よろしくお願いします

タイトルRe^3: frameタグのtarget属性を排除したい
記事No414
投稿日: 2010/09/23(Thu) 17:10
投稿者wanichan
参照先http://www.wanichan.com/web/frontpage/fp2003a/fp01.htm#d
まず、target属性が必要なのはなぜかというのは、フレームにそれぞれ名前がついているはずです。
リンク先をどのフレームに表示するか、target属性で指定するという具合です。
メニューフレームのリンクをクリックすると、メインフレーム内にそのリンク先のWebページが表示するようにするには、そのメインフレームをターゲットフレームとして設定する必要があります。そのためにtarget属性が必要となるのです。

フレームページは結構厄介ですよ。
とても複雑にできていて、複数のHTMLページがセットで成り立つものです。
また、リロードしたら最初のページに戻ってしまう仕様となりますし、
SEO(検索エンジン最適化)においても何かと不利と言われています。

<frameset cols="150,*">
<frame name="contents">
<frame name="main" src="frame/top.html" target="_self">
</frameset>

これは、フレームを構成するHTMLファイルのソースですね。
左右に分割して、左150ピクセル、右側が残りとなります。
左側のフレームは未定義、右側のフレームだけ定義されている状態かと思われます。

target="_self" という部分は、そのフレーム自身にリンク先のWebページを表示する、という感じです。

target="_blank" : 新しいウィンドウでリンク先を開く
target="contents" : ほかのフレームのリンク先をcontentsと名前の付いたフレームに表示する

ざっとこういう仕組みとなります。
FrontPage 2003の記事ですが参照先をご覧ください。

というより、なぜ、フレームページを作成されているのでしょうか。
まずその理由をお聞かせください。