0

iframe内にhtmlファイルを表示しようとしています。

html ファイルは、サーバーのローカル フォルダー内にあり、関連するアクセス許可 (例: c:\temp) があります。

私は試した:

iframe = document.createElement("iframe");
iframe.src = "file:///c:\temp\a.html";
iframe.style.display = "block";
document.body.appendChild(iframe);

ただし、コンテンツは iframe 内に表示されません。

私が試した別の解決策はajax、HTMLを内部に表示するために使用することdivです:

$("#DIV").html( *READ HTML TEXT FROM FILE *)

しかし、ここでの問題は、html ページ内に含まれている写真と css ファイルがあり、現在の場所が私の web サイトであるため表示できないことです (それらはc:\temphtml のフォルダーに含まれています)。

内に画像を含むhtmlページを表示する方法を知っている人はいますiframeか?

4

2 に答える 2

2

問題は、ブラウザがそれfile:///c:\temp\a.htmlをブラウザのローカル ファイルとして認識し、訪問者の C: ドライブを指していることです。

そのローカル フォルダーを Web サイト (IIS 内) の仮想ディレクトリとして設定し、正しい Web パス (http://...) を使用してファイルを参照できます。そうすれば、フォルダーを移動しませんが、Web サーバーから引き続き使用できます。

于 2012-11-20T15:57:32.220 に答える
0

temp ではなくルートから html ファイルを読み込んだときに適切に動作すると仮定すると (したがって、ファイルの場所に関する問題以外はすべて除外されます)、アクセスできる限り、Web サイトに関連するファイルを読み込むことができます。該当する場合は、ローカルとサーバーの両方のパスを理解する必要があります。たとえば、Web サイトのピアであるホストされたサーバーに「temp」というフォルダーがあります。

Request.PhysicalApplicationPath を使用すると、自分のサイトがホストの「c:\inetpub\wwwroot\mydomain.com\index.htm」にあることがわかります。したがって、一時フォルダーとファイルは「c:\inetpub\wwwroot」にある必要があります。 \temp\myfile.txt" (繰り返しますが、temp は私のサイトのピアです)。

大雑把な例:

string _filePath, _uriServerName = "";

_filePath = Request.PhysicalApplicationPath;
_uriServerName = Request.ServerVariables["SERVER_NAME"].ToLower();

if (_uriServerName != "localhost")
{
int rootPos = _filePath.IndexOf("wwwroot"); //get position wwwroot 
_filePath = _filePath.Substring(0, rootPos) + "temp\\myfile.txt";
}

上記を使用して、Web サイト外のファイルをロードします。そのために、それはうまく機能します。ただし、iframe には別の課題がある場合があります。これがクロスドメインの問題を引き起こすとは思いませんが、完全にはわかりません.

于 2012-11-20T15:46:59.910 に答える