Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Высота фрейма и высота загружаемого файла (https://javascript.ru/forum/events/1761-vysota-frejjma-i-vysota-zagruzhaemogo-fajjla.html)

findman 14.09.2008 01:03

Высота фрейма и высота загружаемого файла
 
Приветствую!

Не знаю, как это решить, может Javascript поможет.

Запарка такая. Выводится содержимое страницы в 2 горизонтальных фрейма. Нижний фрейм высотой 60пкс, с этим нет проблемм. А верхний должен быть по высоте равным высоте загружаемого в него файла. Этот файл меняет свою высоту в зовисимоти от наполнения.

Вопрос. Как сделать, чтобы верхний врейм вытягивался по высоте загружаемого в него файла?

Для инфо. Есть сайт на верстку, на котором должна проигрываться музыка флэшлеером и при переходе со страницы на страницу музыка не должна прерываться. Именно с этой целью решилось использовать фреймы, хотя имею к ним хроническую антипатию. Может есть другое решение или возможно ли это организовать с помошью JavaScript (в нём я изрядно слаб)?

Help! SOS! Помогите!

Kolyaj 14.09.2008 09:23

Цитата:

Сообщение от findman
хотя имею к ним хроническую антипатию

А я вот имею хроническую антипатию к фоновой музыке на сайтах.

Проигрыш от фрэймов будет гораздо больше выигрыша от неприрываемой музыки.
http://javascript.ru/forum/misc/1166...j-chastyu.html

findman 14.09.2008 15:34

Цитата:

Сообщение от Kolyaj
А я вот имею хроническую антипатию к фоновой музыке на сайтах.

Эта антипатия взаимна, просто не стал её писать в воём предыдущем посте, чтобы не усугублять всё своими антипатиями. Но, что ж поделаешь, если клиентура такова.

А теперь по сути. Как мне этот код привинтить к моему примеру. Вот к этим фреймам. Я понимаю ,что вторая функция вычисляет высоту, а первая функция должна прописываться во фрейме где-то.

<frameset rows="*,60" frameborder="NO" border="0" framespacing="0">
  <frame src="frame.htm" name="mainFrame" scrolling="NO">
  <frame src="frame1.htm" name="bottomFrame" scrolling="NO" noresize>
 </frameset>


Какую строчку вписать нужно, чтобы заработало? Я, конечно, сам сейчас копать буду, так как лёгких путей в таких случаях не ищу, да и не сторонник халявы, но если кому не жаль пары минут, то отпишитесь пожалуйста с примером.

Спасибо.

Андрей Параничев 14.09.2008 17:09

findman,
А что вы хотите получить в итоге? Если вы даже зададите вместо звездочки (или height) фрейма точное число пикселов - прокрутка страницы не появится, только фрейма.

findman 14.09.2008 17:24

Сделал-нашёл другой вариант :) Использовал iframes, вместо frameset и другой скрипт. В IE, Mozilla и Opera работает отлично. Спасибо всем!

findman 15.09.2008 03:33

Вот наткнулся на ещё один подводный камень. Вот скрипт, который я использовал для решения вышеописанной проблеммы:

function autoIframe(frameId){
	try{
		frame = document.getElementById(frameId);
		innerDoc = (frame.contentDocument) ? frame.contentDocument : frame.contentWindow.document;
		objToResize = (frame.style) ? frame.style : frame;
		objToResize.height = innerDoc.body.scrollHeight;
	}
	catch(err){
		window.status = err.message;
	}
}


Таким образом он вставляется во фрейм:

<iframe id="tree"  name="tree" src="frame.htm" align="center" width="100%" scrolling="no" frameborder="0" marginheight="0" marginwidth="0" onload="if (window.parent && window.parent.autoIframe) {window.parent.autoIframe('tree');}">


Проблемма в том, что при загрузке во фрейм другого документа, который по высоте меньше предыдущего, не меняется высота фрейма и остаётся чёрная полоса (у меня бэкграунд чёрный). Работает нормально (уменьшает высоту) только в IE. Mozilla, Opera оставляют (не уменьшают) полосу от прошлого документа.

Можно ли уменьшать высоту фрейма автоматически, после того, как в нём был загружен документ большего размера по высоте?


Часовой пояс GMT +3, время: 13:04.