Вопрос по html, embed, javascript, iframe, asp.net – Вставить внешнюю страницу без фрейма?

51

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

Спасибо!

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

Ваш Ответ

6   ответов
1

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

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

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

Php прекрасно подойдет для jpb, создав дополнительную нагрузку на ваш сервер. Решения на стороне клиента (js) сохранят ваш сервер красивым и свежим augusto
32

http://jsfiddle.net/7MaXx/

<!--[if IE]>
<ob,ject 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]-->
Тег объекта имеет проблему с высотой. даже если дать рост: 100%; все еще не работает. работать только с фиксированным значением высоты. Еще нужно получить высоту и ширину внешней веб-страницы. это то, что я еще не мог найти. Если бы вы могли помочь Sun_Sparxz
Вы можете установить высоту примерно 2500px или около того ... У меня та же проблема. Mike Q
установка высоты с использованием единицы высоты окна просмотра - высота: 99vh, устраняет проблему с высотой user147215
WOAW !! Просто идеально, где все решения не удалось для меня! Большое спасибо! 538ROMEO
В моем случае мне пришлось отображать динамически созданный HTML-контент внутри объекта. Я заменял атрибут данных времени выполнения тега объекта с помощью jQuery следующим образом. element.attr ('data', "data: text / html; charset = utf-8," + escape (HTMLContent)), и это работает как шарм. Angshu Guha
41

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

<script>$("#testLoad").load("http://www.somesite.com/somepage.html");</script>
<div id="testLoad"></div>
//would this help
Я не думаю, что вы можете использовать Javascript, потому что он ограничен по соображениям безопасности. DefyGravity, как бы я поступил об этом? JacobTheDev
Этот код зависит от разрешения на внешней странице «allow-control-allow-origin: *», которое вы не можете гарантировать. FlavioEscobar
+1 - я думаю, вам все еще нужно разрешить междоменный вызов ajax с www.orginaldomain.com на www.somesite.com. DefyGravity
это не работает в SharePoint, как веб-части. Разве SharePoint не разрешил мне загружать другие файлы с помощью js? @FlavioEscobar saber tabatabaee yazdi
1

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

2

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

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

2

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

<?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) ); }
?>
Не верный ответ для требования JS. Я не использую PHP. Как это поможет мне? Вы могли бы поставить псевдокод, хотя. Это было бы полезно Tarun
ОП попросил решение JS. Кроме того, в тегах нет ничего о OP, использующем PHP, только ASP.net Robert Dundon
Даже если это не точное решение, это очень полезный скрипт php для других людей, +1 electroid

Похожие вопросы