Есть ли способ заменить iframe? - PullRequest
4 голосов
/ 08 мая 2011

Я просто столкнулся с важной проблемой, так как у меня много источников из другого домена, что означает, что если я использую iframe, мне придется изменить размер всего этого содержимого. Но проблема в том, что я не могу изменить или вставить код на исходную веб-страницу. Из-за этого я хотел бы спросить, есть ли какие-либо другие решения, чтобы пропустить использование iframe? Советы: мне нужно все содержимое (включая изображения, CSS и т. Д.) Из URL. Не является частью содержания.

Ответы [ 5 ]

1 голос
/ 08 мая 2011

Быстрая идея - вы можете попытаться написать прокси на стороне сервера и предоставить контент в iframe, но с помощью src, указывающего на страницу прокси вместо реальной страницы (то есть контролируемой с помощью переданных параметров)

1 голос
/ 08 мая 2011

PHP include функция может быть лучшим местом для начала.Вы просто не можете изменить разметку или можете использовать PHP и JavaScript?

РЕДАКТИРОВАТЬ:

Попробуйте использовать include('http://www.google.com') для включенияURL на вашей странице без использования iFrame.Любые не абсолютные ссылки на каталоги в коде (например, <img src='/img.png'> не будут отображаться или загружаться правильно.

Если вам нужно исправить эти ссылки и у вас нет возможности изменить саму разметку, вы можетеиспользуйте функцию file_get_contents и измените такие вещи:

$page = file_get_contents('http://www.google.com');
$page = preg_replace('/(href|src)=([\'"])\//',"$1=$2http://google.com/",$page);
echo $page;
0 голосов
/ 02 июля 2012

Измененный ответ @beanland, моего / proxy.php файла с кэшированием:

$host = parse_url($_GET['url'], PHP_URL_HOST);
$dir  = $_SERVER[DOCUMENT_ROOT].'/cache_proxy/'.$host;
if(!is_dir($dir))
    mkdir($dir);
$filepath = $dir.'/'.md5($_GET['url']);

if(is_file($filepath)){
    include($filepath);

}else{
    $page = file_get_contents($_GET['url']);

    $page = preg_replace('/(a href)=[\'\"](http.*)[\'\"]/', '$1="http://buy/proxy.php?url=$2"', $page);
    $page = preg_replace('/(a href)=[\'"][^http](.*)[\'"]/', '$1="http://buy/proxy.php?url=http://'.$host.'/$2"', $page);
    $page = preg_replace('/(href|src)=[\'"][^http+](.*)[\'"]/', '$1="http://'.$host.'/$2"', $page);

    file_put_contents($filepath, $page);

    echo $page;
}

Сначала замените все <a href=""> ссылки на ваш прокси, затем замените все относительные <img src="/path..."> и т. Д. До абсолютного <img src="http://...">

0 голосов
/ 08 мая 2011

jQuery Загрузить в div http://api.jquery.com/load/

0 голосов
/ 08 мая 2011

Выполните вызов AJAX, используя тип данных JSONP, чтобы вернуть содержимое другой страницы. Вам нужно будет внести изменения в код на обоих доменах, хотя, чтобы это работало. http://en.wikipedia.org/wiki/JSONP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...