Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.03.2012, 12:30
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Размеры фреймов и JavaScript
Знатоки подскажите, как решить казалось бы простую задачу.
Имеется три обычных (не плавающих) фрейма, один вверху, два внизу.
Как нажатием кнопки в верхнем фрейме изменить соотношение размеров двух нижних фреймов?
При этом важно, чтобы код работал во всех современных браузерах.

Пробовал вариант обращения к элементу frameset основного создающего фреймы документа: например, если у задающего нижние фреймы элемента frameset свойство name = N, то изменить размеры нижних фреймов удаётся установкой свойства cols этого framesetа, то есть конструкцией, например, вида parent.N.cols = '23%,*'.
Удаётся, но только в Internet Explorer, в других браузерах (Google Chrome, Mozilla Firefox и им подобных) этот код не срабатывает.
Мастера, помогите создать кроссбраузерный код.

Последний раз редактировалось bes, 22.03.2012 в 12:39. Причина: опечатка
Ответить с цитированием
  #2 (permalink)  
Старый 22.03.2012, 12:56
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

http://oooportal.ru/?cat=article&id=1009
Ответить с цитированием
  #3 (permalink)  
Старый 23.03.2012, 10:22
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Спасибо, dmitriymar, за ссылку на неплохую статью, в которой описано как разрешаются ссылки при работе фреймами.
Но ответа на то, как изменять размеры фреймов, к каким свойствами и каких элементов необходимо при этом обращаться, я в этой статье так и не нашёл (если я не заметил того, что должен был заметить, просьба ткнуть носом)).
Давно пытаюсь решить эту задачу, во всех хороших найденных мною статьях описывается лишь то как обращаться к фреймам и их содержимому, но ничего не говорится о том как управлять размерами самих фреймов.
А очевидное, приведённое мною, решение с использованием свойства cols, почему-то работает только в IE, может быть есть какие-нибудь управляющие размерами свойства, наподобие, width и height, но описание подобных свойств я также не встречал.
Ответить с цитированием
  #4 (permalink)  
Старый 23.03.2012, 23:16
Новичок на форуме
Отправить личное сообщение для ychetka Посмотреть профиль Найти все сообщения от ychetka
 
Регистрация: 23.03.2012
Сообщений: 7

пропиши style (
<iframe id="my_frame" ... style="width:500px;height:500px;">
), потом получай свой элемент и меняй ему так как тебе нужно.
$('#my_frame').css('width','100px')
- установил ширину 1000px
Ответить с цитированием
  #5 (permalink)  
Старый 24.03.2012, 11:44
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Спасибо за ответ, ychetka, но данное решение логично для плавающих фреймов (вначале я указал, что речь не про них), возможно я просто не понимаю как применить этот способ к обычным фреймам, если знаешь, подскажи.
Что касается того, что я использую структуру именно из обычных, а не плавающих фреймов, связано с тем, что у них возникают проблемы при масштабировании страницы, а именно в определённый момент масштабирования двух рядом расположенных и растянутых во высоте и в совокупности по ширине на весь экран элементов <iframe> происходит соскакивание правого фрейма вниз под фрейм, который был для него левым.
Ответить с цитированием
  #6 (permalink)  
Старый 24.03.2012, 12:14
Новичок на форуме
Отправить личное сообщение для ychetka Посмотреть профиль Найти все сообщения от ychetka
 
Регистрация: 23.03.2012
Сообщений: 7

ну во первых в твоем случае неважно к какому, плавающий, или не плавающий, фрейму ты применишь style="width:500px;height:500px;". Есть элемент, ты его получаешь и устанавливаешь его размер. А насчет того что у тебя ломается разметка страницы, при использовании iframe, это вообще не проблема, ты где-то ошибся в плане верстки, попробуй позиционировать iframы, style="positionabsolute,relative,fixed)"
Ответить с цитированием
  #7 (permalink)  
Старый 24.03.2012, 16:56
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Поясни, пожалуйста, ychetka, каким образом применить атрибут style к обычным фреймам, обычным фреймы задаются в установочном файле и обрамлены тегами frameset, перебить свойство cols этих тегов заданием свойств width и height для атрибута style в теге frame лично у меня никак не получается.
Ответить с цитированием
  #8 (permalink)  
Старый 24.03.2012, 17:33
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

попробуйте через getTagName("N")[0].cols
Ответить с цитированием
  #9 (permalink)  
Старый 25.03.2012, 03:11
Новичок на форуме
Отправить личное сообщение для ychetka Посмотреть профиль Найти все сообщения от ychetka
 
Регистрация: 23.03.2012
Сообщений: 7

Почему вы так упорно не хотите использовать iframe ? там операции со сменой размеров в рамках одного домена делаются именно style="width:500px;height:500px;position:"
Насчет frameset попробуйте задать так (у меня уверенности что это будет работать везде)
<frameset rows="*" cols="*">
<frame tyle="width:500px;height:500px;" src="" id="" name="">
Ответить с цитированием
  #10 (permalink)  
Старый 25.03.2012, 10:38
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Так как добиться результата предложенными вами способами, 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.
Внесите в код этих двух файлов необходимые предложенные вами изменения, чтобы получился работоспособный кроссбраузерный код.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книга: JavaScript. Сильные стороны Magneto Учебные материалы 16 21.04.2013 15:28
Первый Moscow JavaScript Meetup korenyushkin Общие вопросы Javascript 0 26.07.2011 15:23
javascript вставки в vrml сцены. Передать событие из броузера Proletariy Javascript под браузер 0 10.05.2011 12:26
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34