web-dev-qa-db-fra.com

Intégrer une page externe sans iframe?

Existe-t-il un moyen d'intégrer une page Web externe sans utiliser d'iframe? J'ai accès aux deux sites. Je souhaite simplement que la page sur laquelle le contenu est incorporé soit redimensionnée en fonction du contenu incorporé (elle changera avec le temps et se trouvera sur plusieurs sites).

Merci!

EDIT: Je ne pense pas qu’aucune sorte de AJAX fonctionnerait parce que c'est intersite, et JavaScript ne vous permet pas de charger du contenu hors site (à ma connaissance).

51
JacobTheDev

Vous pouvez charger la page externe avec jquery:

 <script> $ ("#testLoad") .load ("http://www.somesite.com/somepage.html"); </ script> 
 <div id = "testLoad "> </ div> 
 // cela aiderait-il 
41
Sudhir Bastakoti

Ou vous pouvez utiliser la balise 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

La question est bonne, mais la réponse est: cela dépend de cela.

Si l'autre page Web ne contient aucun formulaire ou texte, vous pouvez par exemple utiliser la méthode CURL pour extraire le contenu exact et l'afficher ensuite sur votre page. Vous pouvez le faire sans utiliser d'iframe.

Toutefois, si la page que vous souhaitez incorporer contient par exemple un formulaire, elle ne fonctionnera pas correctement, car la gestion du formulaire se trouve sur ce site.

2
tildy

Qu'en est-il quelque chose comme ça?

<?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

Pourquoi ne pas utiliser PHP! C'est tout côté serveur:

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

Si vous possédez les deux sites, vous devrez peut-être accepter cette transaction avec une déclaration complète des en-têtes côté serveur. Fonctionne à merveille.

1
martar

Les importations HTML, qui font partie de la distribution des composants Web, permettent également d'inclure des documents HTML dans d'autres documents HTML. Voir http://www.html5rocks.com/en/tutorials/webcomponents/imports/

1
lafeber