Размеры фреймов и JavaScript
Знатоки подскажите, как решить казалось бы простую задачу.
Имеется три обычных (не плавающих) фрейма, один вверху, два внизу. Как нажатием кнопки в верхнем фрейме изменить соотношение размеров двух нижних фреймов? При этом важно, чтобы код работал во всех современных браузерах. Пробовал вариант обращения к элементу frameset основного создающего фреймы документа: например, если у задающего нижние фреймы элемента frameset свойство name = N, то изменить размеры нижних фреймов удаётся установкой свойства cols этого framesetа, то есть конструкцией, например, вида parent.N.cols = '23%,*'. Удаётся, но только в Internet Explorer, в других браузерах (Google Chrome, Mozilla Firefox и им подобных) этот код не срабатывает. Мастера, помогите создать кроссбраузерный код. |
|
Спасибо, dmitriymar, за ссылку на неплохую статью, в которой описано как разрешаются ссылки при работе фреймами.
Но ответа на то, как изменять размеры фреймов, к каким свойствами и каких элементов необходимо при этом обращаться, я в этой статье так и не нашёл (если я не заметил того, что должен был заметить, просьба ткнуть носом)). Давно пытаюсь решить эту задачу, во всех хороших найденных мною статьях описывается лишь то как обращаться к фреймам и их содержимому, но ничего не говорится о том как управлять размерами самих фреймов. А очевидное, приведённое мною, решение с использованием свойства cols, почему-то работает только в IE, может быть есть какие-нибудь управляющие размерами свойства, наподобие, width и height, но описание подобных свойств я также не встречал. |
пропиши style (
<iframe id="my_frame" ... style="width:500px;height:500px;">), потом получай свой элемент и меняй ему так как тебе нужно. $('#my_frame').css('width','100px')- установил ширину 1000px |
Спасибо за ответ, ychetka, но данное решение логично для плавающих фреймов (вначале я указал, что речь не про них), возможно я просто не понимаю как применить этот способ к обычным фреймам, если знаешь, подскажи.
Что касается того, что я использую структуру именно из обычных, а не плавающих фреймов, связано с тем, что у них возникают проблемы при масштабировании страницы, а именно в определённый момент масштабирования двух рядом расположенных и растянутых во высоте и в совокупности по ширине на весь экран элементов <iframe> происходит соскакивание правого фрейма вниз под фрейм, который был для него левым. |
ну во первых в твоем случае неважно к какому, плавающий, или не плавающий, фрейму ты применишь style="width:500px;height:500px;". Есть элемент, ты его получаешь и устанавливаешь его размер. А насчет того что у тебя ломается разметка страницы, при использовании iframe, это вообще не проблема, ты где-то ошибся в плане верстки, попробуй позиционировать iframы, style="position:(absolute,relative,fixed)"
|
Поясни, пожалуйста, ychetka, каким образом применить атрибут style к обычным фреймам, обычным фреймы задаются в установочном файле и обрамлены тегами frameset, перебить свойство cols этих тегов заданием свойств width и height для атрибута style в теге frame лично у меня никак не получается.
|
попробуйте через getTagName("N")[0].cols
|
Почему вы так упорно не хотите использовать iframe ? там операции со сменой размеров в рамках одного домена делаются именно style="width:500px;height:500px;position:"
Насчет frameset попробуйте задать так (у меня уверенности что это будет работать везде) <frameset rows="*" cols="*"> <frame tyle="width:500px;height:500px;" src="" id="" name=""> |
Так как добиться результата предложенными вами способами, dmitriymar и ychetka, у меня никак не получается, попробую конкретизировать свой вопрос.
Имеется два файла index.htm и button.htm: первый является установочным для фреймов, второй содержит кнопку, по нажатию которой будет происходить изменение соотношения размеров этих фреймов. Привожу значимое содержимое этих файлов. index.htm: <frameset name="M" id="M" rows="10%,*" > <frame name="f1" id="f1" src="button.htm" scrolling="no" noresize> <frameset name="N" id="N" cols="50%,*" > <frame name="f2" id="f2" src="button.htm" scrolling="auto"> <frame name="f3" id="f3" src="button.htm" scrolling="auto"> </frameset> </frameset> button.htm: <button onclick="parent.N.cols='10%,*'">Button</button> Данный код, как я уже и отмечал, работает только в IE. Внесите в код этих двух файлов необходимые предложенные вами изменения, чтобы получился работоспособный кроссбраузерный код. |
Часовой пояс GMT +3, время: 03:20. |