1

3 つの行に配置されたフレームセットに 3 つのフレームがあるとします。フレーム 1 と 3 は私のサイトからのもので、フレーム 2 (中央のもの) は外部の Web サイトからのものです。ブラウザにフレーム 2 のデータを中央揃えにする狡猾な方法はありますか?

データの両側に 2 つの空白列があるフレームセット内でフレームセットを使用する小さな回避策を見つけましたが、これはフレーム 2 と 3 のスクロールバーがずれていることを意味します。

何か案は?

編集:私が現在持っているコードは次のとおりです:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="サーバー" />
<frameset rows="10%,65%,25%" border=0 frameborder="no">
    <frame name="nav" noresize scrolling="no" src='NavigationBar.aspx?NAVIGATION=<%=sDisplayNavigation %>'>
    <frameset cols="1*,1010px,1*">
        <frame name="lspace" scrolling="no" src="border.htm">
        <frame name= "main" scrolling="auto" src='<%=sMainTextURL%>#highlight'>
        <frame name="rspace" scrolling="no" src="border.htm">
    </frameset>
    <frame name="suggest" scrolling="yes" noresize src='<%=sSuggestURL%>'>
</frameset>
</html>
4

1 に答える 1

2

あなたが探しているのは、別のサイトからのものであっても、他のフレームに CSS を挿入する方法だと思います。

これは、ページをリクエストして変更するサーバー側スクリプトなしでは不可能だと思います。

Javascript には、window.frames[] を使用して他のフレームを変更する方法と、ローカル フレーム内の要素と同様に DOM トラバーサルを使用する方法があります。「同一オリジンポリシー」のため、これは問題になります。これは基本的に、example.com からロードされたフレーム内の JavaScript が、foo.com からロードされたフレーム内の DOM にアクセスできないことを意味します。同様のドメイン foo.example.com と bar.example.com があっても、ブラウザでは別のドメインとして扱われるため、一方の JavaScript が他方にアクセスすることはできません。

これは、XMLHttpRequest を使用した ajax 呼び出しにも影響します。この影響を軽減する方法はありますが、回線の両側で JavaScript を実行できるようにする必要があると思います。

私は最近、あるサイトを別のサイトに埋め込みたいと思っていたあなたがやっていることと似たようなことを試みましたが、同じ起源のポリシーはそれを非現実的にしました.

これを行うもう 1 つの方法は、クライアント側ではなくサーバー側です。クライアントに代わって他のサーバーからコンテンツを要求する php スクリプトを作成し、それがサーバー上にあるかのように提供します。次に、同じサーバー上にあるJavaScriptが、そのフレームで行うことを実行できます。他のサイトが多くの Cookie や ajax を使用している場合、これは難しいかもしれませんが、あなたの php には対処すべき同一オリジン ポリシーがありません。

于 2008-10-07T16:53:07.720 に答える