Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

58. Автоматический resize высоты IFRAME, загруженного с другого домена (Дмитрий Котеров)
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Sun Dec 20, 2009 8:00 pm (написано за 9 секунд)
   Post subject: 58. Автоматический resize высоты IFRAME, загруженного с другого домена
Reply with quote

Как известно, при работе с фреймами для обеспечения безопасности браузеры не позволяют JavaScript-коду обращаться со страницы одного домена на страницу другого домена. В этой статье мы рассмотрим аспекты кросс-доменной работы в JavaScript и опишем один из «хороших» частных случаев.

Но вначале я приведу решение задачи автоматического изменения высоты IFRAME, загружаемого с другого домена. (Resize height of an IFRAME from a different domain.)

dklab.ru/chicken/nablas/58.html
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Mon Dec 21, 2009 12:07 am (спустя 4 часа 6 минут; написано за 46 секунд)
   Post subject:
Reply with quote

Забавное решение... Вот только действительно намного проще сделать через document.domain, как мне кажется :). И, если честно, не очень понимаю, для чего вообще такая штука может понадобиться, если всё равно у тебя есть доступ к обоим доменам...
Back to top
View user's profile Send private message Send e-mail
jamayka
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Dec 22, 2009 11:21 am (спустя 1 день 11 часов 13 минут; написано за 3 минуты 1 секунду)
   Post subject:
Reply with quote

Делюсь своим решением задачи - jamayka.habrahabr.ru/blog/78845/

To Юрий Насретдинов: document.domain работает только для прямых поддоменов. И все эти решения предполагают то, что есть доступ к обоим доменам.
Back to top
Xaxakep
Заглянувший



Joined: 03 Feb 2010
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Wed Feb 03, 2010 5:27 pm (спустя 1 месяц 12 дней 6 часов 6 минут; написано за 5 минут 22 секунды)
   Post subject:
Reply with quote

Ребят помогите пожалуйста с этим скриптом разобраться он мне подходит но есть одно но в IE 6 и 7 он не работает точнее работает но не правильно он вместо того чтоб делать ресайз просто отправляет человека с помощу top.location.replace("master.com/#h" + h); на страничку которая должна грузится в фрейме. Помогите пожалуйста это исправить.

Правда я немного изменил скрипты вот так :
Code (html): скопировать код в буфер обмена
<iframe (december.com/html/4/element/iframe.html) height="150" frameborder="0" width="100%" style="margin: 0pt; padding: 0pt;" onload="var th=this; setTimeout(function() {
var h=null;
if (!h) if (location.hash.match(/^#h(\d+)/)) h=RegExp.$1;
if (!h) for (var i=0; i&lt;10000; i+=30) if (top.frames['h'+i]) { h=i; break; }
if (h) th.style.height=h+'px';
}, 10)"
src="http://www.bon-karta.com.ua/PaketReklama/nakopilka_partners.html?ret=http://www.bon-karta.com.ua/node/54/"> (december.com/html/4/element/.html)

  [Ваш агент не поддерживает фреймы или сконфигурирован так, чтобы
  не отображать их. Однако Вы можете просмотреть
  <A (december.com/html/4/element/a.html) href="foo.html"> (december.com/html/4/element/.html)этот документ.</A>]
  </iframe>
и второй вот так :
Code (JavaScript): скопировать код в буфер обмена
<script>
    window.onload = function() {
        var h = Math.ceil(document.body.scrollHeight / 30) * 30;
        var ie = 0 /*@cc_on + @_jscript_version @*/;
        if (!ie) window.name = "h" + h;
        else top.location.replace("ret#h" + h);
    }
    </script>
Пожалуйста помогите разобраться.
Back to top
View user's profile Send private message
gennadz
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Feb 09, 2010 8:13 am (спустя 5 дней 14 часов 45 минут; написано за 39 секунд)
   Post subject: Не работает в IE
Reply with quote

У меня тоже не работает в IE 8, причем я ничего почти не менял...тоже перенаправляет на главную
Back to top
sorokinvj
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Oct 25, 2010 5:24 pm (спустя 8 месяцев 16 дней 9 часов 11 минут; написано за 36 секунд)
   Post subject:
Reply with quote

работает только один раз. После этого все клики открывают новое окно, вместо того чтобы загружать страницы в iframe
Back to top
atomix
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Nov 16, 2010 2:58 pm (спустя 21 день 21 час 34 минуты; написано за 53 секунды)
   Post subject:
Reply with quote

Да, и у меня тоже такая же проблема в IE... А вообще способ рабочий, лучшего решения я еще не видел. Как бы только в IE обойти этот баг, было вообще отлично.
Back to top
xqx
Guest





Карма: 388
   поощрить/наказать


PostPosted: Tue Nov 16, 2010 3:11 pm (спустя 12 минут; написано за 2 минуты 44 секунды)
   Post subject:
Reply with quote

Кажется частично удалось решить проблему с IE, нужно в replace писать полностью адрес страницы, например если фрейм вставляется на страницу mysite.com/index.html, то вот что нужно писать:

top.location.replace("mysite.com/index.html#h" + h);
Back to top
killoff1983
Guest





Карма: 388
   поощрить/наказать


PostPosted: Sat Feb 19, 2011 3:43 pm (спустя 3 месяца 3 дня 32 минуты; написано за 1 минуту 15 секунд)
   Post subject:
Reply with quote

А что делать в случае нескольких фреймов на странице?
Родительское окно у нас одно, и в ИЕ каждый фрейм будет изменять его адрес.
Таким образом код if (location.hash.match(/^#h(\d+)/)) h=RegExp.$1; будет работать непонятно как.
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 414
   поощрить/наказать


PostPosted: Fri Jun 22, 2012 1:05 am (спустя 1 год 4 месяца 2 дня 9 часов 21 минуту; написано за 18 секунд)
   Post subject:
Reply with quote

xqx wrote:
Кажется частично удалось решить проблему с IE, нужно в replace писать полностью адрес страницы, например если фрейм вставляется на страницу mysite.com/index.html, то вот что нужно писать:
top.location.replace("mysite.com/index.html#h" + h);
Само собой.

killoff1983
Можно передавать имя фрейма вместе с h=...
Back to top
View user's profile Send private message Send e-mail
ARIRAN
Заглянувший



Joined: 02 Mar 2009
Posts: 2
Карма: 0
   поощрить/наказать


PostPosted: Mon Apr 01, 2013 9:33 pm (спустя 9 месяцев 10 дней 20 часов 28 минут; написано за 3 минуты 52 секунды)
   Post subject:
Reply with quote

вопрос по технологии:
а как теперь "заставить" фрейм изменять высоту, если его "повторной" загрузки не происходит.
пример вот тут logist.ru/archive/YaBB.cgi (на странице вставлено 3 фрейма из них 2 должны быть с резиновой высотой)


clip2net.com/s/4QwF4W
нажимаются "ссылки" внутри содержимого фрейма и высота содержимого меняется. но при этом перезагрузки фрейма не происходит и высота фрейма остается та, которую он посчитал при загрузке. соответственно появляется внизу зазор.
Back to top
View user's profile Send private message
oira666
Guest





Карма: 388
   поощрить/наказать


PostPosted: Mon Dec 16, 2013 4:56 pm (спустя 8 месяцев 14 дней 19 часов 22 минуты; написано за 44 секунды)
   Post subject: IE11
Reply with quote

Code (JavaScript): скопировать код в буфер обмена
var ie = 0 /*@cc_on + @_jscript_version @*/;
Это не работает для IE11 (((
Как определить в дочернем скрипте IE11?
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

Но если не поверите и все же попытаетесь - как только увидите, что все безрезультатно, удалите свой пост, пожалуйста. Модераторы тоже люди, нехорошо, если они погрязнут в тоннах спама.
     

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML