3

Web サイトがあり、そのページの 1 つにフレームセットが含まれています (別の Web サイトからデータを取得する必要があります)。問題は、フレームセットを含むページにアクセスすると、他のリンクをクリックしても URL が変更されないことです。フレームセットのあるページのリンクを表示し続けます。たとえば、フレームセットのあるページの URL は次のとおりです。

http://www.ourwebsite.com/profile.php

通常、Web サイトの他のリンクをクリックすると、そのページが持つ URL/ページ名に変わります。しかし、ここでは、フレームセット ページに到達すると、サイト内のどこに移動しても、URL は何らかの方法でマスクされ、 http: //www.ourwebsite.com/profile.php のみが表示されます。

これを回避する方法はありますか?

4

2 に答える 2

1

<a href="foo" target="_top">

于 2011-01-21T06:25:31.380 に答える
1

編集:

別のサイトのフレームを表示したいが、そのサイトがその HTML をどのように発行するかを制御できる場合は、以下の元の回答の指示に従って、フレームがハイパーリンクを発行するようにしtarget="_top"ます。

ただし、制御できないサイトをフレーミングしている場合、フレームの使用はおそらく機能しません。代わりに、別の方法を使用してデータを取得する必要があります。たとえば、サーバー アプリはfile_get_contents()または別の PHP HTTP クライアント ライブラリを使用してリモート サイトからデータを取得し、自分のサイト内で (フレームなしで) データを送信できます。もちろん、リモート サイトを所有していない場合は、この方法でデータを再利用しても問題ないことを確認する必要があります。

古い回答 (フレーム内のサイトを管理している場合は、これを使用してください:

これを回避する一般的な方法は、すべてのフレーム内の URL を新しいフレームセット URL にポイントすることですtarget="_top"。ハイパーリンクには通常、どのフレームをロードするかをフレームセット ページに伝えるクエリ文字列パラメーターが含まれています。

たとえば、/frameset.php最初に と を指す 2 つのフレームを持つフレームセットを想像し/frame1.phpてください/frame2.php。frame1 内のリンクは次のようになります。

<a href="/frameset.php?frame1=link_url&frame2=frame2_current_url" target="_top">

link_urlそのフレームにロードするコンテンツ ページはどこで、frame2_current_url現在 frame2 にロードされている URL はどこですか (ページのリロード時に変更したくないため)。

次に、親フレームセットのコードを変更してこれらのクエリ文字列パラメーターを探し、それに応じて各フレームの URL を設定する必要があります。クエリ文字列パラメーターが指定されていない場合は、各フレームのデフォルト URL を使用します。クエリ文字列パラメーターに入力するすべての URL を URL エンコードしてください。

このマジックは、自分のサイトのリンクを指すリンクに対してのみ実行することに注意してください。外部サイトへのリンクの場合、URL をまったく書き直すべきではないため、次のようなハイパーリンクになってしまいます。

<a href="http://www.externalsite.com/" target="_top">

警告: このアプローチは、生成されるすべての URL を厳密に制御できるサイトにのみ適しています。実際の Web サイトは、特に開発者以外がコンテンツを提供している場合や、クライアント側のスクリプトを介してナビゲーションを行っている場合は、制御が緩くなる傾向があります。

于 2011-01-21T06:27:19.150 に答える