web-dev-qa-db-ja.com

Iframeなしで外部ページを埋め込みますか?

Iframeを使用せずに外部Webページを埋め込む方法はありますか?両方のサイトにアクセスできますが、コンテンツが埋め込まれているページは、埋め込まれているコンテンツに基づいてサイズを変更したいだけです(時間とともに変化し、複数のサイトにあります)。

ありがとう!

編集:クロスサイトであり、JavaScriptがオフサイトのコンテンツをロードできないため(私が知っている限り)、AJAXはどのような種類でも機能しないと思います。

51
JacobTheDev

Jqueryで外部ページをロードできます。

 <script> $( "#testLoad").load( "http://www.somesite.com/somepage.html"); </ script> 
 <div id = "testLoad "> </ div> 
 //このヘルプ
41

または、objectタグを使用できます。

http://jsfiddle.net/7MaXx/

<!--[if IE]>
<object classid="clsid:25336920-03F9-11CF-8FD0-00AA00686F13" data="http://www.google.be">
<p>backup content</p>
</object>
<![endif]-->

<!--[if !IE]> <-->
<object type="text/html" data="http://www.flickr.com" style="width:100%; height:100%">
<p>backup content</p>
</object>
<!--> <![endif]-->
32
ptriek

質問は良いですが、答えは次のとおりです。それはそれに依存します。

たとえば、他のWebページにフォームやテキストが含まれていない場合、CURLメソッドを使用して正確なコンテンツを取得し、その後ページに表示できます。あなたはiframeを使わずにそれを行うことができます。

ただし、埋め込みたいページにフォームなどが含まれている場合、フォームの処理はそのサイト上にあるため、正しく機能しません。

2
tildy

このようなものはどうですか?

<?php
$URL = "http://example.com";
$base = '<base href="'.$URL.'">';
$Host = preg_replace('/^[^\/]+\/\//', '', $URL);
$tarray = explode('/', $Host);
$Host = array_shift($tarray);
$URI = '/' . implode('/', $tarray);
$content = '';
$fp = @fsockopen($Host, 80, $errno, $errstr, 30);
if(!$fp) { echo "Unable to open socked: $errstr ($errno)\n"; exit; } 
fwrite($fp,"GET $URI HTTP/1.0\r\n");
fwrite($fp,"Host: $Host\r\n");
if( isset($_SERVER["HTTP_USER_AGENT"]) ) { fwrite($fp,'User-Agent: '.$_SERVER

["HTTP_USER_AGENT"]."\r\n"); }
fwrite($fp,"Connection: Close\r\n");
fwrite($fp,"\r\n");
while (!feof($fp)) { $content .= fgets($fp, 128); }
fclose($fp);
if( strpos($content,"\r\n") > 0 ) { $eolchar = "\r\n"; }
else { $eolchar = "\n"; }
$eolpos = strpos($content,"$eolchar$eolchar");
$content = substr($content,($eolpos + strlen("$eolchar$eolchar")));
if( preg_match('/<head\s*>/i',$content) ) { echo( preg_replace('/<head\s*>/i','<head>'.

$base,$content,1) ); }
else { echo( preg_replace('/<([a-z])([^>]+)>/i',"<\\1\\2>".$base,$content,1) ); }
?>
2
talbottsw

なぜPHPを使用しないのですか!すべてサーバー側です:

<?php print file_get_contents("http://foo.com")?>

両方のサイトを所有している場合、サーバー側でヘッダーの完全な宣言を使用してこのトランザクションを承認する必要があります。美しく機能します。

1
martar

Webコンポーネントキャストの一部であるHTMLインポートは、他のHTMLドキュメントにHTMLドキュメントを含める方法でもあります。 http://www.html5rocks.com/en/tutorials/webcomponents/imports/ を参照してください

1
lafeber