プロが教える店舗&オフィスのセキュリティ対策術

CGI初心者です。

下記図のようなイメージでhtmとcgiを組み合わせて表示させたいと考えています。

index.htm
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|←bunner.htm
|  ̄ ̄ ̄| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
|      |                    |
|      |                    |
|      |                    |
|      |                    |
|      |                    |
|      |                    |
|      |                    |
|      |                    |
| ___|_____________|
 ↑ menu.cgi       ↑mein.htm

index.htmにFRAMEタグを使用して表示させています。
menu.cgiに固定リンクを表示し、リンクをクリックした時にtarget指定でmein.htmに表示させたいです。

IE6では上手くいったのですが、IE7以降で試した場合、新規ウインドウでリンクが開かれてしまいます。(target=_blankと同じ動きです)
ちなみにFireFoxでは新規タブに表示されます。

html形式の時点では問題なくできるようなので、恐らくcgiが絡んでいるのが原因だと考えています。
そもそもこのような作り方が問題なのでしょうか?
menu.cgiに当たる部分は、固定リンクの他にテキストファイルを読み出して表示させるような可変リンクを表示したい部分もあるのですが、回避方法が見付からなく困っています。
どうか、お力添え宜しくお願いします。

A 回答 (3件)

貴方が示したHTMLでFirefox2とIE8で試してみましたが、


なんら支障ありませんでしたよ。

それと、
「../../../top.htm」はアドレスをカットしているのですか?
サーバパスでリンクを張るのが正しいと自分は思います(../top.htm)。
    • good
    • 0
この回答へのお礼

ご検証ありがとうございます。

知人に聞いて分かったのですが、こちらの環境が悪いみたいです。
実はmenu.cgiは違うドメインへのファイルパスになるので、セキュリティ面でIE7以降やFireFoxではデフォルトの設定で、異なるドメイン間のサブフレーム移動が無効になっているのが原因のようでした。

そもそもこちらの認識が薄かったです。
お騒がせしました。
併せてありがとうございました。

お礼日時:2009/07/01 23:43

質問内容があまり理解できないので詳しく書けませんが、


targetをジャンプさせたいフレーム名にしてみてください。

<frameset cols="180,*" border="0" frameborder="0" framespancing="0">
<frame src="menu.cgi" name="menu" scrolling="auto">
<frame src="main.html" name="main" scrolling="auto">
</frameset>

print "<a href=\"test.html\" target=\"main\">テストページへ</a>\n";

この回答への補足

アドバイスありがとうございます。

何が原因なのか私も良く解っていないのですが、
具体的に言うと

index.htmで

<FRAMESET rows="13%,*" frameborder="NO" border="1" >
  <FRAME src="bunner.htm" name="header" marginwidth="0" marginheight="0" frameborder="0" scrolling="no">
<FRAMESET cols="16%, *" frameborder="NO" border="1">
  <FRAME src="menu.cgi" name="menu" marginwidth="0" marginheight="0" frameborder="0" scrolling="no">
  <FRAME src="top.htm" name="main" marginwidth="0" marginheight="0" frameborder="0">

というように組み込んでいます。これでイメージどおりのフレーム構成ができます。

menu.cgiでは

print << "END";
 ・
 ・
 ・
<td align="center">
  <a href="../../../top.htm" target="main">
    <IMG src="../../../img/top_btn.gif" width="120" alt="トップへ" border="0">
  </a>
</td>
 ・
 ・
 ・
END

と組み込み、target="main"に当たるフレームが切り替わると思っています。

困っているのは
IE6では理想の動作を行いますが、IE7以降のバージョンやFireFoxになると動作に変化があり、フレーム内ではなく新規でウインドウやタブが立ち上ってしまう事です。
ブラウザの仕様の影響なのでしょうか?

ちなみにmenu.cgiがmenu.htmの場合だと、IEのバージョンに関係なくフレーム内で切り替わります。

アドバイス内容も試みて見ます。

補足日時:2009/07/01 10:40
    • good
    • 0

 CGIだから云々には関係ありません。

ブラウザはそれがCGIから出力されたものか否かは知る由もないのですから・・
 firefoxをお使いなら、menue.cgiが表示されている部分で、コンテキストメニューから「このフレーム」→「ソース表示」でリンクがちゃんとtarget="main"とかになっているか確認してみてください。

 ただ、フレームは過去の技術で今はほとんど使われない(将来的には廃止)ので、CSS等で作成されたほうがよいでしょう。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。
そうなんですね・・・勉強不足でした。

もう一度確認してみます。

フレームについても知識がありませんでした。
CSSの勉強も不十分なので、もう一度勉強しなおそうと思います。

ありがとうございました。

お礼日時:2009/06/30 10:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!