[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Альтернатива IFRAME
mshdn
Проблема в следующем:
В фрэйме
<IFRAME id="i" src="<?=$url ?>" width="720px" scrolling="no" border=1px align="center">
</IFRAME>
для сайтов с скроллингом по высоте некорректно отображаются вслывающие окна
jQuery плагина fancybox - fancybox размещает их по ценру экрана на реальном сайте $url,
а во фрэйме - нет - по размеру фрэйма. ( указывать высоту фрэйма height=* - не допускается)
Есть ли способ обойти фрэйм?
Пробовал
писать проксирующий серверный скрипт (php)
$html = file_get_contents($url);
echo $html;
и потом работать с $html - что-то менять удается, но возникает проблема в другом -
на сайте $url - используется технология ajax и в отображаемом
echo $html - ajax не срабатывает - ошибка подключения с другого домена.
Если способ вместо фрэйма корректно отобразить инфру с другого домена?
Игорь_Vasinsky
Получил себе контент с чужого сайта
$data = file_get_contents("http://alienDomen.com/page.html");



_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
mshdn
Да
$data = file_get_contents("http://alienDomen.com/page.html");
echo $data
- работает!!!!

но если на сайте "http://alienDomen.com/page.html" используется ajax для обновления без
перегрузки страницы, то это прокси
echo $data
не выполняет ajax обращение
( ошибка javascript - попытка входа с чужого домена)
Игорь_Vasinsky
а ты смотри куда запрос делается аяксом и какие параметры и каким методом передаются - и делай эти запросы у себя.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
mshdn
нет, задача в том, чтобы сайт $url сам все делал.

Он и делает все под IFRAME, ajax работает,
но под фрэймом плохо работает fancybox.

Под прокси через file_get_contents работает fancybox, но не работает ajax
kaww
mshdn
, если второй сайт не ваш и нет возможности организовать нормальный кросдоменный аякс, то либо проксировать все запросы либо копать в сторону eval (если конечно есть возмжность) (eval javascript)
mshdn
спасибо за консультацию.
Да, сайт чужой, и аякс врядли организую.

либо проксировать все запросы - т.е. ? как - ?

либо копать в сторону eval (если конечно есть возмжность) (eval javascript)
- тоже непонятно о чем речь
kaww
Цитата (mshdn @ 28.05.2013 - 11:58)
либо проксировать все запросы - т.е. ? как - ?

ну как обычно. Меняете все адреса на свой, который ходит за данными на чужой сайт и отдает уже результат:
1. file_get_contents, замена всех урл вида http://somehost/ajax/bla/bla на http://myhost/proxy?url=ajax/bla/bla
2. прокси скрипт :
echo file_get_contents('http://somehost/' . $_GET['url'])

Цитата (mshdn @ 28.05.2013 - 11:58)
либо копать в сторону eval (если конечно есть возмжность) (eval javascript)
- тоже непонятно о чем речь

тут первое что пришло в голову, может и бред (уже и без eval). Суть
вместо выполнения аякс создаем не видимый ифрейм, в который грузим ответ с удаленного сервера. Контент ифрейма передаем в функцию.
myFunc(data) {
alert($.parseJSON(data));
}

fakeAjax(url) {

var iframe = $("<iframe/>");
iframe.attr("src", url);
$("body").append(iframe); //может и лишнее
var script = $("<script>myFunc('" + iframe.contents() + "')</script>");
$("body").append(script)
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.