2

Web ページを 2 つの部分で構成したいと考えています。上部にはテキストボックスがあります。ユーザーがテキスト ボックスに URL を入力すると、下部でその URL のコンテンツが参照されます。ユーザーが下部のリンクをクリックすると、下部が新しい URL に移動し、上部のテキスト ボックスが新しい URL に変わります。どうすればいいですか?

注: この動作は Google 翻訳 (例:ここ)と同じですが、翻訳はありません。

4

2 に答える 2

1

最初の問題..

同じ起源の問題

あなたが求めていることを達成する唯一の方法は、Google翻訳が行うこととまったく同じ方法です-サーバー側のスクリプトをプロキシリクエストとして使用することです:

http://translate.google.com/translate_un?depth=1&hl=en&ie=UTF8&prev=_t&rurl=translate.google.com&sl=auto&tl=en&twu=1&u=http://de.wikipedia.org/wiki/USA&lang=de&usg= ALkJrhgoLkbUGvOPUChoNZIkVcMQpXhxZg

上記は、Google 翻訳が翻訳済みページを表示するために使用する iframe から取得した URL です。注意すべき主な点は、URL のドメイン部分が親ページの URL と同じであることですhttp://translate.google.com。フレームと親ウィンドウの両方が同じドメインを共有していない場合、親ウィンドウの JavaScript は内部の何にもアクセスできません。 iframe。ブラウザの組み込みセキュリティによってブロックされます。

プロジェクトで(同じドメイン上の)自分のページのみをナビゲートする場合、上記は明らかに問題にはなりませんが、例としてGoogle翻訳を提供していることを考えると、そうではないと思います。

Google はどうするでしょうか。

上記の URL が行うことは、サーバー側にウィキペディアのページをフェッチして返すように依頼することです。これにより、iframe で表示できるようになりますが、iframe からは、このページはtranslate.google.comではなく でホストされているように見えますwikipedia。これは、iframe が親ウィンドウと同じオリジン内に留まり、JavaScript を使用して iframe 内のページを編集または変更できることを意味します。

次の問題……。

プロキシされたコンテンツを書き換える

基本的に私が言いたいのは、これは HTML とクライアント側の JavaScript だけでは達成できないということです。サーバー側、つまり PHP、Python、Ruby、Lisp、Node.. などから何かを支援する必要があります。 . このスクリプトは、プロキシされたページが正しく表示/レンダリングされるようにする責任があります。たとえば、元のサーバーの content/images/css への相対リンクが壊れていないことを確認する必要があります(タグを使用するbaseか、相対リンクを物理的に書き換えることができます) 。また、サイトの利用規約に従って、これをサイトの違法使用と見なすサイトも多数あるため、サービスからブラック リストに登録する必要があります。

最終問題..?

ユーザーがプロキシから離脱できないようにする

プロキシ スクリプトを作成したら、iframe (古いフレームセットの使用は避けてください) をonload使用し、 iframeの JavaScript マジックを使用ondomreadyして、ページ内のすべてのリンク、フォーム、ボタンを書き換えます。これは、クリックまたは送信されたときに、元の宛先ではなくプロキシ スクリプトに投稿されるようにするためです。uこの書き換えコードは、Google 翻訳 URL のように、元の宛先をプロキシ スクリプトに送信する必要もあります。これを並べ替えると、iframe が新しい宛先コンテンツでリロードされることを意味しますが、重要なことに、iframe は同じドメインにとどまります。

問題が多すぎる!

私だったら、個人的にあなたの戦略を再考します

全体として、これは単純な作業ではなく、100% 完全に保証されているわけでもありません。これは、問題を引き起こす原因が多数あるためです。

  1. 一部のサイトは、フレームから抜け出すように設計されています。
  2. 簡単に書き換えることができないページからユーザーがナビゲートできる方法があります。つまり、JavaScript を利用したナビゲーションです。
  3. 一部のページは、間違ったホストから提供されると壊れるように設計されています。
  4. 他の Web サイトのこの種の「プロキシ」を行うサイトは、著作権と使用に関して問題が発生する可能性があります。

Google がそれを行うことができる理由は、彼らには多くの時間、お金、およびリソースがあるからです。Google 翻訳の多くは、実際には JavaScript ではなくサーバー側で処理されます。

提案

自分のサイトをナビゲートするユーザーを追跡する場合:

  • Google アナリティクスを使用します。
  • または、Cookie を使用して単純なサーバー側追跡システムを実装します。

サイトにアクセスしてからワールド ワイド ウェブの残りの部分に移動するユーザーを追跡する場合は、次のようにします。

  • あきらめてください。Web テクノロジーは、このようなことを防ぐように設計されています。
  • または、オンラインマーケティング会社に参加して、このようなことの防止を回避するために最善を尽くします.
于 2012-11-18T22:57:42.270 に答える
0

2番目のフレームにjavascript関数を追加します-

<frame id="dataframe" src="frame_a.htm" onload="load()">

テキストボックスにIDを持たせます-「テスト」と言います

function load()
{
document.getElementById('test').value=document.getElementById('dataframe').src
}
于 2012-11-17T19:37:42.520 に答える