【发布时间】:2012-01-16 00:38:55
【问题描述】:
有没有办法在不使用 iframe 的情况下嵌入外部网页?我可以访问这两个站点,我只希望嵌入内容的页面根据嵌入的内容调整大小(它会随着时间的推移而变化,并且在多个站点上)。
谢谢!
编辑:我认为任何类型的 AJAX 都行不通,因为它是跨站点的,而且 JavaScript 不允许您加载站外内容(据我所知)。
【问题讨论】:
标签: javascript asp.net html iframe embed
有没有办法在不使用 iframe 的情况下嵌入外部网页?我可以访问这两个站点,我只希望嵌入内容的页面根据嵌入的内容调整大小(它会随着时间的推移而变化,并且在多个站点上)。
谢谢!
编辑:我认为任何类型的 AJAX 都行不通,因为它是跨站点的,而且 JavaScript 不允许您加载站外内容(据我所知)。
【问题讨论】:
标签: javascript asp.net html iframe embed
HTML Imports 是 Web Components cast 的一部分,也是一种将 HTML 文档包含在其他 HTML 文档中的方法。见http://www.html5rocks.com/en/tutorials/webcomponents/imports/
【讨论】:
为什么不使用 PHP!都是服务器端:
<?php print file_get_contents("http://foo.com")?>
如果您拥有这两个网站,您可能需要在服务器端完整声明标头来确定此交易。效果很好。
【讨论】:
这样的事情呢?
<?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) ); }
?>
【讨论】:
您可以使用 jquery 加载外部页面:
//这有帮助吗【讨论】:
或者你可以使用对象标签:
<!--[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]-->
【讨论】:
问题很好,但答案是:这取决于。
如果其他网页不包含任何表单或文本,例如,您可以使用 CURL 方法提取确切的内容,然后在您的页面上显示。你可以在不使用 iframe 的情况下做到这一点。
但是,如果您要嵌入的页面包含例如表单,它将无法正常工作,因为表单处理在该站点上。
【讨论】: