Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Trotor

Отложенная загрузка встроенного плеера Ютуба

Рекомендованные сообщения

Вы другие варианты смотрели?

Да. Из этих вариантов, изображения низкого качества, не считая maxresdefault.jpg, но он встречается ещё реже чем sddefault.jpg

Поделиться сообщением


Ссылка на сообщение

Вот товарищ с форума сделал видоизменение для кода:

 

'use strict';
function r(f) {
   /in/.test(document.readyState) ? setTimeout('r(' + f + ')', 9) : f();
}

// Master_TW_DAR:
// Данная функция выполняет установку миниатюры по умолчанию.
// Параметр videoID - идентификатор YouTube-видео.
function setDefaultImage(videoID) {

   // Переменная строкового типа videoMiniImage по умолчанию хранит имя стандартной миниатюры (sddefault.jpg).
   var videoMiniImage = "sddefault";

   // Переменная логического типа sddefaultIsExist будет хранить результат проверки существования миниатюры.
   var sddefaultIsExist = new Boolean();

   // Выполнить проверку существования требуемой миниатюры.
   // Далее вместо тестового false следует предполагаемый вызов некоторой функции (из API YouTube).
   // Предположительно эта функция возвращает true или false в зависимости от результата.    

   //sddefaultIsExist = функцияПроверяющаяСуществованиеМиниатюры(какие-тоАргументыФункции);
   sddefaultIsExist = false;

   // Если миниатюра sddefault НЕ существует для данного видео, вместо неё будем использовать миниатюру hqdefault.
   if (!sddefaultIsExist) {
       videoMiniImage = "hqdefault";
   }    

   // Возвратить строку с именем миниатюры в вызывающий код.
   return videoMiniImage;
}

r(function() {
   if (!document.getElementsByClassName) {
       // Поддержка IE8
       var getElementsByClassName = function(node, classname) {
           var a = [];
           var re = new RegExp('(^| )' + classname + '( |$)');
           var els = node.getElementsByTagName("*");

           for(var i=0, j=els.length; i<j; i++) {
               if(re.test(els[i].className)) {
                   a.push(els[i]);
               }
           }

           return a;
       }

       var videos = getElementsByClassName(document.body,"youtube");
   } 
   else {
       var videos = document.getElementsByClassName("youtube");
   }

   var nb_videos = videos.length;

   for (var i = 0; i < nb_videos; i++) {        

       // Master_TW_DAR: 
       // Здесь мы используем имя файла миниатюры с помощью возвращаемого значения.        
       // Это значение будет получено при вызове функции setDefaultImage().
       // Функция setDefaultImage() принимает в качестве аргумента идентификатор YouTube-видео.
       videos[i].style.backgroundImage = 'url(http://i.ytimg.com/vi/' + videos[i].id + '/' + setDefaultImage(videos[i].id) + '.jpg)';        


       var play = document.createElement("div");
       play.setAttribute("class", "play");
       videos[i].appendChild(play);

       videos[i].onclick = function() {            
           var iframe = document.createElement("iframe");
           var iframe_url = "https://www.youtube.com/embed/" + this.id + "?autoplay=1&autohide=1";

           if (this.getAttribute("data-params")) {
               iframe_url+='&' + this.getAttribute("data-params");
           }

           iframe.setAttribute("src", iframe_url);
           iframe.setAttribute("frameborder", '0');

           iframe.style.width  = this.style.width;
           iframe.style.height = this.style.height;

           this.parentNode.replaceChild(iframe, this);
       }
   }
});

 

 

Вроде код правильный, тем не менее скрипт наотрез не хочет вставлять sddefault.jpg. То есть, если sddefault.jpg существует, всё равно вставляет миниатюру худшего качества hqdefault.jpg.

Поделиться сообщением


Ссылка на сообщение
19.12.2019 в 23:59, Haktar сказал:

Вроде код правильный, тем не менее скрипт наотрез не хочет вставлять sddefault.jpg. То есть, если sddefault.jpg существует, всё равно вставляет миниатюру худшего качества hqdefault.jpg.

Замучился я с этим скриптом - не получается. Ребята, подскажите что не так.😥

Поделиться сообщением


Ссылка на сообщение

 

videos[i].style.backgroundImage = 'url(http://i.ytimg.com/vi/' + videos[i].id + '/sddefault.jpg)';

заменить на 

			var img = new Image();
			img.src = 'http://i.ytimg.com/vi/' + videos[i].id + '/sddefault.jpg';
			img.setAttribute("data-img-index", i);
			img.onload = function() {
				var index = this.getAttribute('data-img-index');
				videos[index].style.backgroundImage = 'url(http://i.ytimg.com/vi/' + videos[index].id + '/' + ((this.width == 120) ? 'hqdefault' : 'sddefault') + '.jpg)';
			}

 

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
10 часов назад, newbie сказал:

заменить на 

Ух ты, супер - то что надо! Большое спасибо!

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...