Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать высоту фрейма исходя из его контента 
:(
    Опции темы
artnik
Дата 15.9.2011, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 10.9.2011

Репутация: нет
Всего: нет



Как можно узнать высоту документа внутри фрейма. Не обязательно кросс-доменно (т.к. это невозможно на js).
Я пробовал нечто подобное на jQuery:
Код

var frame = $('iframe.contentFrame'),            // Фрейм
      frameDoc = frame.contents(),                  // Контент внутри фрейма
      frameBody = frameDoc.find('body'),         // <body> фрейма
      frameBodyH = frameBody.outerHeight();   // высота <body>
frame.height(frameBodyH);

alert(frameBodyH);


Алерт все-время выдает высоту 150. Вобщем такой метод не работает.

Подскажите есть ли способ как-нибудь подсчитать эту высоту?

Это сообщение отредактировал(а) artnik - 15.9.2011, 16:35
PM MAIL   Вверх
newbee
Дата 15.9.2011, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бревно
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 24.8.2011

Репутация: нет
Всего: 19



Попробуй clientHeight или offsetHeight, AFAIK один из них возвращает реальную высоту элемента.


--------------------
You're face to face
With man who sold the world
PM   Вверх
artnik
Дата 15.9.2011, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 10.9.2011

Репутация: нет
Всего: нет



newbee
Вылетает undefined. Наверно jQuery зараза не хочет работать с js.

Добавлено через 6 минут и 52 секунды
Хотя... Вообще ничего не вылетает

Это сообщение отредактировал(а) artnik - 15.9.2011, 16:32
PM MAIL   Вверх
Stolzen
Дата 15.9.2011, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1041
Регистрация: 17.10.2005

Репутация: 4
Всего: 48



Цитата(artnik @  15.9.2011,  17:31 Найти цитируемый пост)
Наверно jQuery зараза не хочет работать с js.

Омг. С чем-чем не хочет jQuery работать?


--------------------
datatalks.ru - анализ данных, статистика, машинное обучение
PM MAIL WWW   Вверх
InfMag
Дата 15.9.2011, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



Цитата(Stolzen @ 15.9.2011,  20:31)
Цитата(artnik @  15.9.2011,  17:31 Найти цитируемый пост)
Наверно jQuery зараза не хочет работать с js.

Омг. С чем-чем не хочет jQuery работать?

Точно! Огонь))

Добавлено через 4 минуты и 44 секунды
artnik, как вариант, внутри фрейма должен быть стиль в первую очередь:
Код

html, body {
  width: 100%;
  height: 100%;
}

Потом, либо должен быть либо оборачиваемый главный блок, который на время узнавания размеров скрывается, либо можно так попробовать, скрыть body:
Код

$('body').hide();
var w = $(document).width();
var h = $(document).height();
$('body').show();

Либо если есть главный блок:
Код

$('#general_wrapper').hide();
var w = $(document).width();
var h = $(document).height();
$('#general_wrapper').show();

И можно к примеру вызвать верхнюю функцию, у родителя фрейма:
Код

parent.useSize(w, h);


Добавлено через 6 минут и 2 секунды
А чтобы избежать мерцаний, можно и так попробовать:
Код

$('#general_wrapper').css('float', 'left');
var w = $(document).width();
var h = $(document).height();
$('#general_wrapper').css('float', 'none');

PM   Вверх
artnik
Дата 15.9.2011, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 10.9.2011

Репутация: нет
Всего: нет



Цитата(Stolzen @  15.9.2011,  17:31 Найти цитируемый пост)
Цитата(artnik @  15.9.2011,  17:31 )Наверно jQuery зараза не хочет работать с js.
Омг. С чем-чем не хочет jQuery работать?

jQuery не может работать с javascript функциями, потому что это jQuery объект. Попробуйте к $('#id') пристыковать .clientHeight() и чо будет?

InfMag
А если проделать все это через contents? Можно же напрямую менять стили и все остальное

Это сообщение отредактировал(а) artnik - 15.9.2011, 18:49
PM MAIL   Вверх
InfMag
Дата 15.9.2011, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 2
Всего: 4



artnik,  smile  
Код

$('#id').find('body')[0].clientHeight;

И вроде как .get() тот же результат даёт:
Код

$('#id').find('body').get(0).clientHeight;


Добавлено @ 18:51
Цитата(artnik)

А если проделать все это через contents? Можно же напрямую менять стили и все остальное

Про какой contents идёт речь?

Это сообщение отредактировал(а) InfMag - 15.9.2011, 18:53
PM   Вверх
artnik
Дата 15.9.2011, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 10.9.2011

Репутация: нет
Всего: нет



Про jQuery contents http://api.jquery.com/contents/
Она получает доступ к внутреннему контенту фрейма. Потом с этим резултом можно работать, редактировать фрейм изнутри.
К примеру $('iframe').contents().find('body');
Но только $('iframe').contents().find(document) не работает, можно только к элементу dom...

Добавлено @ 19:21
О, вроде-бы получилось через scrollHeight получить высоту body. Пока все норм. Я просто не знал что можно использовать get и [0]. C ними вроде как все проходит.
Кому интересно вот что получилось:
Код

var frame = $popup.find('iframe.contentFrame'),
    frameDoc = frame.contents();
    bodyH = frameDoc.find('body')[0].scrollHeight;
frame.height(bodyH);


Добавлено @ 19:25
А еще логичнее узнать высоту html тега

Это сообщение отредактировал(а) artnik - 15.9.2011, 19:25
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0465 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.