Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.02.2018, 09:28   #1
Andrej_K
Форумчанин
 
Регистрация: 27.07.2013
Сообщений: 256
По умолчанию Как получить ширину и высоту видео в теге <video>?

Что-то делаю не в то время, но не могу понять что, т. к. при первой загрузке страницы ширина и высота видео получаются, а при перезагрузке становятся 300х150. Понимаю, что при перезагрузке получаю первыми размеры блока по умолчанию, но не могу понять как этого избежать. Делаю адаптивное видео в шапке сайта.

Код:
(function () {
 
        $(window).on('load resize orientationchange', function () {
 
            let Wrapper = $('#responsive-headers-media-wrapper');
            let Image   = $('#header-background-image');
            let Video   = $('#header-background-video');
 
 
            console.clear();
            console.log(Video.width());
            console.log(Video.height());
 
 
            Image.removeAttr('style');
            Video.removeAttr('style');
 
            let AspectRatioWrapper = Wrapper.width() / Wrapper.height();
            let AspectRatioImage = Image.width() / Image.height();
            let AspectRatioVideo = Video.width() / Video.height();
 
            // Setup size of header image.
            if (AspectRatioWrapper >= AspectRatioImage) {
                Image.width(Wrapper.width());
            } else if (AspectRatioWrapper < AspectRatioImage) {
                Image.height(Wrapper.height());
            }
 
            // Setup size of header video.
            if (AspectRatioWrapper >= AspectRatioVideo) {
                Video.width(Wrapper.width());
            } else if (AspectRatioWrapper < AspectRatioVideo) {
                Video.height(Wrapper.height());
            }
        });
    })();
Andrej_K вне форума Ответить с цитированием
Старый 21.02.2018, 22:32   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Могу продположить: при перезагрузке ты получаешь уже закешированое видео. Чтобы получить настоящие размеры, тебе нужно программно загрузить видео: создать объект видео, привязать к нему событие загрузки, хэндлером к которому, ты начнешь получать размеры (и прочее нужное и ненужное). Затем уже дать этому объекту источник.
Дублем браузер грузить ничего не будет, но событие загрузки честно выполнит.
Так же действовали с загрузкой картинок. Загуглишь.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать блок на всю высоту окна минус высоту шапки и футера Qaliti HTML и CSS 3 19.07.2012 13:20
Нарисовать в графическом режиме ромб. Ширину и высоту задавать с клавиатуры mulatoschka1990 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 02.12.2009 10:11
Как отстроить ширину и высоту у DBGrid madmech Общие вопросы Delphi 0 14.10.2009 19:18
как в стрингриде задавать ширину(высоту) ячеек, а для отдельных строк (столбцов)) sdp Компоненты Delphi 3 20.06.2007 23:02
info video - получить информацию о видео файле Toxa Общие вопросы Delphi 1 04.12.2006 17:02