MediaWiki:Common.js: различия между версиями

Нет описания правки
Alternative using object embed
Строка 124: Строка 124:
(function() {
(function() {
     'use strict';
     'use strict';
   
    function createRutubeObject(videoId) {
        var object = document.createElement('object');
        object.setAttribute('data', 'https://rutube.ru/play/embed/' + videoId);
        object.setAttribute('width', '560');
        object.setAttribute('height', '315');
        object.setAttribute('type', 'text/html');
       
        var fallback = document.createElement('a');
        fallback.setAttribute('href', 'https://rutube.ru/video/' + videoId + '/');
        fallback.textContent = 'Смотреть видео на Rutube';
        object.appendChild(fallback);
       
        object.style.border = 'none';
        object.style.display = 'block';
       
        return object;
    }
      
      
     function initRutubePlayers() {
     function initRutubePlayers() {
Строка 129: Строка 147:
          
          
         players.forEach(function(player) {
         players.forEach(function(player) {
             if (player.classList.contains('rutube-processed')) return;
             if (player.hasAttribute('data-processed')) return;
              
              
             var videoId = player.getAttribute('data-video-id');
             var videoId = player.getAttribute('data-video-id');
            var width = player.getAttribute('data-width') || '560';
            var height = player.getAttribute('data-height') || '315';
           
             if (videoId) {
             if (videoId) {
                 var iframe = document.createElement('iframe');
                 var embed = createRutubeObject(videoId);
                iframe.src = 'https://rutube.ru/play/embed/' + videoId + '?p=Ib&brandPlayerUrl=';
                 player.appendChild(embed);
                iframe.width = width;
                 player.setAttribute('data-processed', 'true');
                iframe.height = height;
                iframe.frameBorder = '0';
                iframe.allow = 'autoplay; encrypted-media; fullscreen; picture-in-picture';
                iframe.allowFullscreen = true;
                iframe.referrerPolicy = 'no-referrer-when-downgrade';
               
                iframe.style.border = 'none';
                iframe.style.display = 'block';
                iframe.style.maxWidth = '100%';
               
                player.innerHTML = '';
                 player.appendChild(iframe);
                 player.classList.add('rutube-processed');
             }
             }
         });
         });
     }
     }
      
      
  /*  Запускаем при полной загрузке DOM */
     document.addEventListener('DOMContentLoaded', initRutubePlayers);
     if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initRutubePlayers);
    } else {
        initRutubePlayers();
    }
   
  /* Также запускаем при динамической загрузке контента */
    if (typeof mw !== 'undefined' && mw.hook) {
        mw.hook('wikipage.content').add(initRutubePlayers);
    }
   
})();
})();