Вставить внешнюю страницу без фрейма? - PullRequest
51 голосов
/ 08 декабря 2011

Есть ли способ встроить внешнюю веб-страницу без использования iframe?У меня есть доступ к обоим сайтам, я просто хочу, чтобы размер страницы, на которой встраивается контент, изменялся в зависимости от встраиваемого контента (он будет меняться со временем и находиться на нескольких сайтах).

Спасибо!

РЕДАКТИРОВАТЬ: Я не думаю, что какой-либо AJAX будет работать, потому что это межсайтовый, а JavaScript не позволяет загружать контент вне сайта (насколько яв курсе).

Ответы [ 6 ]

41 голосов
/ 08 декабря 2011

Вы можете загрузить внешнюю страницу с помощью jquery:

<script>$("#testLoad").load("http://www.somesite.com/somepage.html");</script>
<div id="testLoad"></div>
//would this help
32 голосов
/ 08 декабря 2011

Или вы можете использовать тег объекта:

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]-->
2 голосов
/ 02 сентября 2014

А как насчет этого?

<?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 голосов
/ 08 декабря 2011

Вопрос хороший, но ответ: это зависит от этого.

Если на другой веб-странице нет формы или текста, например, вы можете использовать метод CURL, чтобы забрать точное содержимое и после этого отобразить его на своей странице. Вы можете сделать это без использования iframe.

Но если страница, которую вы хотите встроить, содержит, например, форму, она не будет работать правильно, потому что обработка формы находится на этом сайте.

1 голос
/ 07 сентября 2016

Импорт HTML, часть приведения веб-компонентов, также является способом включения документов HTML в другие документы HTML.Смотри http://www.html5rocks.com/en/tutorials/webcomponents/imports/

1 голос
/ 06 декабря 2015

Почему бы не использовать PHP! Это все на стороне сервера:

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

Если вы владеете обоими сайтами, вам может потребоваться одобрить эту транзакцию с полным объявлением заголовков на стороне сервера. Работает красиво.

...