2009-07-09 3 views
-1

こんにちは、私は私がそのページを読み、mydivするためにそれを結合することができることができ、このHttpWebRequestのreadesのみホームページ

string lcUrl = "http://www.greatandhra.com"; 
    HttpWebRequest loHttp = (HttpWebRequest)WebRequest.Create(lcUrl); 
    loHttp.Timeout = 10000;  // 10 secs 
    loHttp.UserAgent = "Code Sample Web Client"; 
    HttpWebResponse loWebResponse = (HttpWebResponse)loHttp.GetResponse(); 
    Encoding enc = Encoding.GetEncoding(1252); // Windows default Code Page 
    StreamReader loResponseStream = 
     new StreamReader(loWebResponse.GetResponseStream(), enc); 
    string lcHtml = loResponseStream.ReadToEnd(); 
    mydiv.InnerHtml = lcHtml; 
    // Response.Write(lcHtml); 
    loWebResponse.Close(); 
    loResponseStream.Close(); 

のようにHttpWebRequestのを使用してページを読み取ろうとしました。しかし、そのdivのリンクのどれかをクリックすると、結果が表示されません。私のアプリケーションにサイト全体が含まれていないからです。だから私たちは今何をするのだろう。

は、誰かが<体>、</htmlの、(< HTML>を含むページ全体が含まれてい

Naguの

+0

サイト全体が存在しないためですか?よく見て。 –

答えて

0

コードあなたはdivのの.InnerHtmlの内側に入れているが、私のコードをコピーし、plzはそれをテストすることができます>と</body>を参照してください)、いくつのブラウザでも問題が発生する可能性があります。

私はiframeに移動するか、リモートサイトのHTMLを解析し、変換されたバージョンを表示することを検討します(HTML、BODY、METAタグを取り除き、リンクURLを置き換えるなど)。

1

DIVに完全なページを挿入することはできません。実際、ヘッドタグ全体がスキップされている可能性があります(実行されていないjavascriptコードもあります)。あなたがやりたいことを考えれば、動的なsrcを使ってIFRAMEを使うことをお勧めします。これはサーバからの圧力をもっと上げてくれます(これは、HTMLをフェッチしてもはやミラーリングされません)。

+0

以前はIFRAMEのみを入れましたが、iframeには物理ファイルがあるソースが必要です。しかし、ここでは、物理的なhtmlファイルを作成したくありません。ちょうどオブジェクトを渡したいだけです – Nagu

1

実際にHTMLのページ全体を別のHTMLに埋め込むことを望むなら、おそらくIFRAMEタグはDIVではなく、使用するタグです。

Webリクエストを作成してそのすべてのコードをリモートページを取得する必要はなく、表示するページを指すようにIFRAMEのsrc属性を設定するだけで済みます。例えば

、マークアップではこのような何か:LcUrlはあなたのコードビハインドページ、あなたのサンプルから、あなたの文字列lcUrlを公開するのプロパティです

<iframe src="<%=LcUrl %>" frameborder="0"></iframe> 

また、IFRAMEをrunat = "server"に設定し、プログラムのsrcプロパティを設定することもできます(の場合はが欲しい場合はコードサンプルと同じ方法でinnerHTMLを挿入することもできます)。

+0

こんにちはあなたの応答に感謝します。 iframeにsrcを設定すると、iframeのseelctedテキストを読み込むことができなくなります。アクセスが拒否されたように見えています。 thatsなぜ私はローカルHTMLファイルにダンプし、iframeにソースを設定します。 – Nagu

+0

あなたが "iframeのseelctedテキストを読むことができません"と言ったら、メインの "ホスティング"ページのJavaScriptからどういう意味ですか? もしそうなら、これはIEのクロスドメインセキュリティが原因です。 1つのフレームから別のドメインのものであれば、他のフレームの内容を読み取ることはできません。これは、(特に)クロスサイトスクリプティング攻撃を防止するためです。 もう1つの方法は、IFRAMEをrunat = "server"にし、DIVの場合と同じようにHTMLをinnerHTMLに注入することです。私はこれを考える* IFRAMEのリモートフルページを正しくレンダリングする必要があります。 –

0

しかし、私はその中のリンクのいずれかをクリックして、ダウンロードページ内のリンクは相対的であるおそらくので...あなただけにHTMLをコピーする場合は任意の結果

が表示されていないDIVあなたのページにDIVがある場合、ブラウザは現在のURLとの相対的なリンクを考慮します。このコンテンツの起源についてはわかりません。私は解決策は、ダウンロードしたHTMLを解析し、href属性の相対URLを絶対URLに変換することだと思います。

0

埋め込みたい場合は、本体部分以外のすべてを削除する必要があります。つまり、<本文の文字列lcHTMLを解析する必要があります。>とbodyタグを含める前にすべてを削除してください。 </body >からすべてを取り除く必要があります。次に、http://で始まり、http://www.greatandhra.comを含めないで、<ベースターゲット= "あなたの頭のセクションにhttp://www.greatandhra.com " >。

埋め込みたくない場合は、応答バッファをクリアしてlcHTML文字列をブラウザに戻すだけです。

PS:これを投稿できるようにするには、スペースをすべて入れてください。

0

あなたがしようとしているようなサウンドは、サイトに埋め込まれた別のサイトを表示することです。これをdivにドロップすることで動作させるには、bodyタグ間でコードを抽出する必要があります。これは、HTMLで有効でなく、別のページの中央にあるようになります。

あなたのサイトのコンテキストからそのページを外してしまったので、リンクは機能しません。そのため、ページ上で相対的な(つまりhttpで始まらない)リンクを書き直す必要があります。あなたのサイトのページを指し示して、他のサイトのページを取得してサイトに表示するか、またはあなたが取得しているサイトのURLをすべての相対リンクの先頭に追加して、サイト。

関連する問題