Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   размер IFRAME в FF (https://javascript.ru/forum/misc/6836-razmer-iframe-v-ff.html)

thunder2 26.12.2009 01:04

размер IFRAME в FF
 
Вот кусок html
<body onclick="hidemenu()" leftmargin="0" topmargin="0" marginheight="0" marginwidth="0">
<!-- делаем верхнее меню -->
<table id="mainmenu" border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td id="menu1"width="100">Ввод данных</td>
<td id="menu2" width="100">Вывод</td>
<td id="menu3" width="100">Система</td>
</tr>
</table>
<iframe id="opr" name="opr" width="100%" height="100%" frameborder="0" onclick="hidemenu()">Ваш браузер не поддерживает IFRAME</iframe>
</table>
</body>

Опять же в IE фрейм растягивается как положено в высоту и ширину, а в FF тока в ширину. Высоту игнорирует. Я уж его и так и сяк крутил - ни в какую. Если % заменить на px, то фрейм начинает растягиваться.
Подскажите что сделать.

x-yuri 26.12.2009 13:50

Цитата:

Сообщение от thunder2
Ваш браузер не поддерживает IFRAME

это какой? (интересно просто)

расскажи что это за фрейм (для чего он) и почему его надо растягивать

thunder2 26.12.2009 14:20

Цитата:

Сообщение от x-yuri (Сообщение 39222)
это какой? (интересно просто)

расскажи что это за фрейм (для чего он) и почему его надо растягивать

Это просто сообщение для тех браузеров которые не поддерживают IFRAME. Рекомендуется её писать всеми источниками по IFRAME. Хотя щас таких браузеров уже наверное нет.

Вообщем так: Есть страница, вверху имеем меню (простая стилизованная таблица) как у Windows приложения (с выпадающими менюшками, подменюшками и т.д.), а сразу под меню помещается этот самый IFRAME. Он используется для того, чтобы выводить нужную страницу в зависимости от выбора пункта меню. Я могу конечно отказаться от IFRAME и перерисовывать всю страницу, но... так удобнее.
А растягивать его надо потому, что он по высоте занимает примерно треть экрана. Ваще ни то, ни сё ! Как будто значение по умолчанию для высоты не меняет heigth="100%", а остается равным 150 пикселя. Самое инетересное что если пишешь heigth="350" или любую другую цифирь, то FF корректно устанавливает высоту фрейма.
Может фрейм в ячейку таблицы засунуть ? Таблицы FF поди корректно растягивает.
Вообще дело принципа - победить FF.

x-yuri 26.12.2009 15:07

создал себе проблему и теперь мужественно ее решаешь? (с)
странички в высоту браузерного окна - не то, на что был рассчитан Web, я думаю. Используя что-то не по назначению, тебе приходиться решать проблемы, которых у других нету ;)
p.s. для того, чтобы 100% работало, для контейнера должна быть задана высота

thunder2 26.12.2009 17:09

Цитата:

Сообщение от x-yuri (Сообщение 39233)
создал себе проблему и теперь мужественно ее решаешь? (с)
странички в высоту браузерного окна - не то, на что был рассчитан Web, я думаю. Используя что-то не по назначению, тебе приходиться решать проблемы, которых у других нету ;)

Ну обсуждать это думаю мы не будем. Есть возможность ввиде IFRAME почему бы её не использовать. И почему оно не по назначению ?

Цитата:

Сообщение от x-yuri (Сообщение 39233)
p.s. для того, чтобы 100% работало, для контейнера должна быть задана высота

А вот тут пожалуйста по-подробнее. У меня iframe помещен непосредственно на страницу. У ней, что высота не задана ? Или имеется ввиду другой контейнер типа DIV или ячейки таблицы ?

x-yuri 26.12.2009 19:52

Цитата:

Сообщение от thunder2
Ну обсуждать это думаю мы не будем

почему? Это очень важный момент

Цитата:

Сообщение от thunder2
Есть возможность ввиде IFRAME почему бы её не использовать

есть возможность есть суп вилкой, почему бы ее не использовать? ;)

Цитата:

Сообщение от thunder2
И почему оно не по назначению ?

ну если на то пошло, тебе фремы использовать надо, которые не лишены своих замечательных недостатков. И, думаю, можно сказать, что фреймы - это устаревший и неактуальный способ экономии трафика (в большинстве случаев)

Цитата:

Сообщение от thunder2
У меня iframe помещен непосредственно на страницу

непосредственно в body что ли?

Цитата:

Сообщение от thunder2
У ней, что высота не задана ?

а где она задана?

thunder2 26.12.2009 20:25

Цитата:

Сообщение от x-yuri (Сообщение 39280)
почему? Это очень важный момент

непосредственно в body что ли?

Да

Цитата:

Сообщение от x-yuri (Сообщение 39280)
а где она задана?

Просветите плиз. Высоту страницы надо еще и задавать ? Разве она не задается браузеров ? И не равно высоте области отображения ?

B~Vladi 26.12.2009 20:27

Цитата:

Сообщение от thunder2
Да

:blink: Это я называю - "говнокод".

thunder2 26.12.2009 22:26

Цитата:

Сообщение от B~Vladi (Сообщение 39285)
:blink: Это я называю - "говнокод".

Я вообщем-то тока начинаю, так сказать, web-программирование и такие многозначительные реплики весьма ободряют и вдохновляют на ответ.

Если Вам кроме ЭТОГО нечего сказать, я бы Вас попросил удалиться из этого поста. Я думаю Вы найдете достаточно постов на этом форуме, где сможете от души "посрать в каментах".

x-yuri 27.12.2009 01:33

Цитата:

Сообщение от thunder2
Я вообщем-то тока начинаю, так сказать, web-программирование

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

Цитата:

Сообщение от thunder2
Просветите плиз. Высоту страницы надо еще и задавать ? Разве она не задается браузеров ? И не равно высоте области отображения ?

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

thunder2 30.12.2009 00:17

Уже отказался от IFRAME. Но это не есть правильно. Вообще web какой-то убогий для программирования оказался.

Раз уже мы с Вами стали общаться у меня возник вопрос по связке ASP+JScript. Если есть опыт может подскажите что за проблема. Есть такой код на стороне сервера (файл app.asp):

var method=Request.QueryString("proc");
var var_userid=Session("userid");

Response.Write("<p>METHOD="+method+'</p>');
Response.Write("<p>Request.QueryString="+Request.Q ueryString+'</p>');
Response.Write("method=='main'"+Request.QueryStrin g("proc")=="main");

и есть строка в браузере URI: http://localhost/app.asp?proc=main
Так вот строка Response.Write("<p>METHOD="+method+'</p>'); выведет в результирующую страницу METHOD=main, а строка Response.Write("method=='main'"+Request.QueryStrin g("proc")=="main"); выведет False. Более того typeof(proc) - показывает, что это объект, хотя ожидается, что это строка. Что тут не так ?

Я в Javascript`е не силен если честно. Потому и спрашиваю.

x-yuri 30.12.2009 07:00

Цитата:

Сообщение от thunder2
Уже отказался от IFRAME. Но это не есть правильно. Вообще web какой-то убогий для программирования оказался.

http://javascript.ru/forum/38921-post30.html

Цитата:

Сообщение от thunder2
Response.Write("method=='main'" + Request.QueryString("proc")=="main"); выведет False

втыкаем на приоритет операторов

Kolyaj 30.12.2009 08:43

Цитата:

Сообщение от thunder2
Вообще web какой-то убогий для программирования оказался.

Вот так пишут люди, пишут. Google там, Яндекс, Twitter, ВКонтакте в конце концов. А потом бац, а веб-то убогий для программирования.

thunder2 30.12.2009 20:08

Цитата:

Сообщение от x-yuri (Сообщение 39541)

Каюсь, накосячил !
Но это всё равно не объясняет почему в операторе if(method=="main") условие выполняется, а в
switch(method){
case "main":
...
...
break
}
не выполняется.
Но если перед switch выполнить присваивание method="main", то switch начинает выполняться. Что тут я не так делаю ?

thunder2 30.12.2009 20:37

Так, почему switch себя так ведет я понял. он использует оператор строго сравнения ===,в то время как в IF я пишу ==, т.е. без учета типа.

А как мне это обойти ?
Мне надо чтобы в switch сравнивался моя переменная method (которая очевидно объект) со строками. method.toString - не помогает.

x-yuri 02.01.2010 03:47

не может не помогать
var a = new String('asd');
switch(a.toString()) {
case 'asd':
    alert(1); break;
}

thunder2 03.01.2010 16:43

Цитата:

Сообщение от x-yuri (Сообщение 39609)
не может не помогать
var a = new String('asd');
switch(a.toString()) {
case 'asd':
    alert(1); break;
}

Неа, в JScript от MS так не работает. Почему - загадка.
А как в строке удалить ведущие и замыкающие пробелы ? И насколько корректно js сравнивает строки с русскими буквами. Например такое не выполняется
if(oRS.Fields("status").Value.substr(1,7)=="ОТК РЫТО") ?

Octane 03.01.2010 17:11

Про switch и toString уже писали

Indiana 04.06.2010 04:13

Доброго времени суток. Позвольте возобновить беседу по поводу вилок в супе. Дело в том, что у меня на главной тоже есть iframe, в который загружаются странички разной высоты. Высоту же самого iframe я сделал по высоте самой большой из них (смотрится коряво, но с полосой прокрутки еще хуже). В нете нашел такой код:
<iframe onload="this.height=this.contentWindow.document.body.scrollHeight;" name="ifr" src="podv1.html" width="100%"  height="100%"   border=....

он позволяет изменять высоту iframe под контент, но работает только IE. В Опере и Лисе размер устанавливается один раз под первую загруженную страничку.
Помогите пжл. модернизировать эту вилку под Ореру и FF или подскажите где лежат ложки:) Зарание благодарен.

Octane 04.06.2010 04:21

this.height = (this.contentDocument || this.contentWindow.document).body.scrollHeight;

Indiana 04.06.2010 04:27

Огромное спс.

x-yuri 04.06.2010 11:18

Цитата:

Сообщение от Indiana
или подскажите где лежат ложки

для этого надо знать, что у тебя за странички грузятся и зачем

Indiana 04.06.2010 13:03

это попытка сделать интернет-магазин, а на страницах картинки с описанием, ценой ну и т.д.....то есть все с моего домена....

x-yuri 04.06.2010 14:12

ну и? Iframe зачем?

Indiana 04.06.2010 15:20

а что можно сделать, если сценарий "корзины" нарисован на js (она находится на главной) и, если странички открывать отдельно, то сценарий не работает, главная перезагружается -"корзина" обнуляется. Конечно на серверных языках это все решаемо, но только если их знать.
Вот и приходится изобретать велосипеды и модернизировать вилки.

Indiana 06.06.2010 14:23

Цитата:

Сообщение от Octane (Сообщение 57809)
this.height = (this.contentDocument || this.contentWindow.document).body.scrollHeight;

не помогл

о:-?

x-yuri 06.06.2010 15:20

Цитата:

Сообщение от Indiana
а что можно сделать, если сценарий "корзины" нарисован на js

переписать сценарий корзины... по-крайней мере для меня не очевидно, что это нельзя на js нормально сделать. По поводу вилок - извини, не в моих привычках помогать с их использованием, да и не силен я в них :(

Indiana 06.06.2010 15:29

а что можно использовать вместо Iframe?

Indiana 06.06.2010 15:38

И наверняка (как это было у меня раньше) проблема решается 1-2 строчками :)
Всеравно спасибо за уделенное мне время


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