Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Подгрузка с другого домена

18K
27 мая 2011 года
imAlex
179 / / 29.07.2010
Доброго времени.
Есть задача: имеется сайт, при выборе некого пункта меню необходимо подгрузить и вывести страницу с другого домена. Данная страница должна открываться в диве блока поверх основной. То есть всплывающее окно. Как это сделать?
На данном этапе, с помощью jQuery и javascript-а меняется параметр display c none на block, меняется адрес iFrama и красиво выводится в iFrame нужная страница. Все бы ничего, но подгружаемая страница может долго грузиться, и тогда всплывает пустое окно, а через несколько секунд появляется сам сайт.
Появилась необходимость в прелоадере. Я читал, что с помощью ajax можно подгружать, а пока грузится выводить прелоадер, однако нигде не могу найти, как подгрузить страницу с другого домена.
Подскажите как это сделать, или как приладить прелоадер к iFram-у.
367
27 мая 2011 года
Meatcoins
303 / / 18.01.2006
Я бы сделал так.
Я обычно не доверяю JavaScript, ведь он может быть отключен у клиента, если речь не идёт о серверном JavaScript.
Я бы скачал страницу другого домена через file_get_contents("http://другой домен").
Но если она может долго грузиться, то может быть через fopen, а если таймаут, то закрываем соединение и достаём её из кэша.
Кэш - это страница другого домена, сохранённая предварительно у нас на сервере и обновляемая по мере удачных попыток соединения.
После этого у нас будет html-код странички другого домена - делаем с ним что хотим.
18K
27 мая 2011 года
imAlex
179 / / 29.07.2010
Спасибо за ответ.
Вариант с кэш-ом не катит, так ка таких страниц очень много. Грузятся они долго не из-за того, что тяжелые, а из-за того, что собираются непосредственно в момент запроса.
Первый вариант я думаю, что тоже не прокатит, так как страница- это форма заявки и содержит свои скрипты.
Вероятно моя попытка описать задачу проще с крахом провалилась. Попробую еще раз:
Есть сайт агентства с поиском интересующих предложений. Данный поиск нам представлен сторонней компанией. При нахождении нужного предложения посетитель может заполнить форму на бронь. Данная форма предоставляется той-же компанией, что и поиск, однако открывается он в новой вкладке. Необходимо сделать так, чтоб заявка открывалась во всплывающем окне.
По идее, нас не интересуют люди с отключенными скриптами, так-как они просто не смогут ничего найти у нас.
277
27 мая 2011 года
arrjj
1.7K / / 26.01.2011
У фрейма событие onload есть
простенький пример:
Код:
<script language="javascript">
function addHandler(object, event, handler)

{

  if (typeof object.addEventListener != 'undefined')

    object.addEventListener(event, handler, false);

  else if (typeof object.attachEvent != 'undefined')

    object.attachEvent('on' + event, handler);

  else

    throw "Incompatible browser";

}
function removeHandler(object, event, handler)

{

  if (typeof object.removeEventListener != 'undefined')

    object.removeEventListener(event, handler, false);

  else if (typeof object.detachEvent != 'undefined')

    object.detachEvent('on' + event, handler);

  else

    throw "Incompatible browser";

}
function loadframe()
{  
    var frameurl=document.getElementById('frameurl').value;
    var div=document.getElementById('wait');
    div.style.display='';
    var frame=document.getElementById('frame');
    frame.style.display='none';
    frame.src=frameurl;
    addHandler(frame,'load',frameload);
}
function frameload()
{
    var div=document.getElementById('wait');
    var frame=document.getElementById('frame');
    div.style.display='none';
    frame.style.display='';
    removeHandler(frame,'load',frameload);
}
</script>
<input type='text' id='frameurl' value='http://www.yaplakal.com/'></input>
<input type='button' &#111;&#110;click="loadframe();" value="Load"></input>
<div id="blah"><div id='wait' style="display:none;">PLEASE WAIT...</div><iframe id="frame" style="display:none; width:500px; height:500px;">oO</iframe></div>
271
27 мая 2011 года
MrXaK
721 / / 31.12.2002
$('#container').load('http://google.com') загрузит и с другого домена)) и $.ajax({method: 'GET'}) и $.get() тоже
18K
30 мая 2011 года
imAlex
179 / / 29.07.2010
Это именно то, что было нужно. Огромное спасибо за ответ и приведенный пример.
Я искал как осуществить подгрузку и видимо слишком зациклился на ajax-е, совсем забыл про такую возможность у iframe-а.

Mr.Hacker, данными методами у меня не получилось. Страница не грузится + многие пишут, что данные методы не всегда работают по отношению к другим доменам. Все-же я и вам благодарен за проявленный интерес. )))
12
31 мая 2011 года
alekciy
3.0K / / 13.12.2005
Цитата: Meatcoins

Я бы скачал страницу другого домена через file_get_contents("http://другой домен").


Плохой совет ввиду блокируемого характера file_get_contents. Правильнее юзать асинхронные с поддержкой таймаутов соединений.

80K
17 января 2012 года
мирослав
1 / / 17.01.2012
Мне нравится
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог