Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] iframe резиновой высоты, IE и невозможность перехода по ссылкам внутри "родителя"

Ответить
Настройки темы
[решено] iframe резиновой высоты, IE и невозможность перехода по ссылкам внутри "родителя"

Старожил


Сообщения: 282
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


добрый день.
столкнулись с такой проблемой. есть страница, на которую фреймами вставлены 3 блока. при этом один из фреймов должен быть резиновой высоты. по резиновой высоте фреймов было найдено решение Дмитрия Котерова http://dklab.ru/chicken/nablas/58.html

PHP код: Выделить весь код

РЕШЕНИЕстраница master.com/index.html

<body>
<
iframe
src
="http://slave.com/frame.html" height="150" 
style="padding:0; margin:0" scrolling="no"
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<10000; i+=30) if (top.frames['h'+i]) { h=i; break; }
    if (h) th.style.height=h+'px';
}, 10)"
></iframe>
</
body>

РЕШЕНИЕстраница slave.com/frame.html
<html>
<
style>
htmlbody padding0margin0; }
</
style>
<
body>
    
Header.
    <
br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
    
Footer.
    <
script>
    
window.onload = function() {
        var 
Math.ceil(document.body.scrollHeight 30) * 30;
        var 
ie /*@cc_on + @_jscript_version @*/;
        if (!
iewindow.name "h" h;
        else 
top.location.replace("http://master.com/#h" h);
    }
    
</script>
</body>
</html> 


соответственно были сделаны вставки фреймов в таком виде

PHP код: Выделить весь код

это простой фрейм с фиксированной высотой

<div class="content">
<
iframe src="/iframe_tags.html" height="80px" width="100%" scrolling="no" frameborder="0" marginheight="0" marginwidth="0"></iframe>
</
div>


а это фрейм с резиновой высотой  
<div id="left_sidebar">
<
iframe src="/iframe_left_column.html" width="250px" scrolling="no" frameborder="0" marginheight="0" marginwidth="0" 
    
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<10000; i+=10) if (top.frames['h'+i]) { h=i; break; }
    if (h) th.style.height=h+'px';
}, 50)"
></iframe

в итоге с высотой все хорошо, но при попытках переходов по ссылкам внутри родительского фрейма в IE ссылки принимают следующий вид http://site.ru/archive/YaBB.cgi/#h470 и перехода по этой ссылке нет. пользователь сперва видит содержимое страницы (причем ссылка в строке браузера выглядит как http://site.ru/archive/YaBB.cgi?board=law) после чего ссылка в строке бразуера изменяется на site.ru/archive/YaBB.cgi/#h470 и пользователь остается на той же странице где и был.

в других браузерах с переходами все нормально и ссылки при переходах "нормальные" http://site.ru/archive/YaBB.cgi?board=law

собственно вопрос - что с этим можно сделать?

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 15:32, 17-04-2013

 

Старожил


Сообщения: 282
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


погуглил еще по вопросу динамического изменения высоты iframe в пределах одного домена. нагуглил такое:

в код страницы (в которую вызывается фрейм вставляется такой скрипт:
PHP код: Выделить весь код

<script
function 
myFunc () 

document.getElementsByName ('quotes_frame') [0].style.height = (window.frames ['quotes_frame'].document.body.scrollHeight 10) + 'px'

</script> 

а при вызове iframe добавляется событие onload
PHP код: Выделить весь код

<iframe src="left_frame.htm" width="250px" scrolling="no" frameborder="0" marginheight="0" marginwidth="0" name="quotes_frame" onload="myFunc ()"

сама страница (фрейма) left_frame.htm не содержит никаких скриптов и т.д. чистый html

и тут еще возникла другая проблемка: не отображается контент родительского файла, расположенный после вставки iframe


в итоге высота меняется в IE, FF, Opera а вот в Chrome - не меняется. как можно поправить это дело?

-------
настоящему корейцу завсегда везде ништяк!


Последний раз редактировалось koresaram, 18-04-2013 в 12:38.


Отправлено: 12:26, 18-04-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 282
Благодарности: 1

Профиль | Сайт | Отправить PM | Цитировать


докопался до истины. поскольку фреймы с одного домена все решилось простым расчетом подгружаемого iframe
PHP код: Выделить весь код

<iframe src="/iframe_left_column1.html" width="250px" scrolling="no" frameborder="0" marginheight="0" marginwidth="0" onload="this.height=this.contentWindow.document.body.scrollHeight;"></iframe

в файле iframe_left_column1.html никаких скриптов и прочего не надо.

-------
настоящему корейцу завсегда везде ништяк!


Отправлено: 17:16, 18-04-2013 | #3



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » [решено] iframe резиновой высоты, IE и невозможность перехода по ссылкам внутри "родителя"

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Использование - "Положение об использовании ПО" и "Правила использования ПО" на предприятии netochka Лицензирование продуктов Microsoft 7 27-06-2013 09:01
[решено] Пропал значок "Подключение по локальной сети" из "Сетевых подключений" Autification Microsoft Windows NT/2000/2003 1 27-12-2012 10:19
[решено] есть ли программа, "замораживающая" время внутри себя AlterEgoFS Хочу все знать 3 08-12-2010 15:04
Комп полностью "зависает" на ~1мин и снова "отвисает" (подробнее внутри) sashadeg Непонятные проблемы с Железом 24 09-04-2010 20:10
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29




 
Переход