Перейти к содержанию

MediaWiki:Common.js

Материал из Wiki Sestrica
Версия от 14:03, 28 октября 2026; Администратор (обсуждение | вклад) (Новая страница: «→Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице: (function () { 'use strict'; function initVideoTimestamps() { document.addEventListener('click', function (event) { const link = event.target.closest('a[href]'); if (!link) return; const match = link.hash.match(/^#video-time-(\d+...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Замечание: Возможно, после публикации вам придётся очистить кэш своего браузера, чтобы увидеть изменения.

  • Firefox / Safari: Удерживая клавишу Shift, нажмите на панели инструментов Обновить либо нажмите Ctrl+F5 или Ctrl+R (⌘+R на Mac)
  • Google Chrome: Нажмите Ctrl+Shift+R (⌘+Shift+R на Mac)
  • Edge: Удерживая Ctrl, нажмите Обновить либо нажмите Ctrl+F5
  • Opera: Нажмите Ctrl+F5.
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */

(function () {
    'use strict';

    function initVideoTimestamps() {
        document.addEventListener('click', function (event) {
            const link = event.target.closest('a[href]');
            if (!link) return;

            const match = link.hash.match(/^#video-time-(\d+)$/);
            if (!match) return;

            const video = document.querySelector(
                '.mw-parser-output video'
            );
            if (!video) return;

            event.preventDefault();

            const seconds = Number(match[1]);

            // Прокрутить страницу к видеоплееру.
            video.scrollIntoView({
                behavior: 'smooth',
                block: 'start'
            });

            // Перейти к нужному времени и запустить видео.
            function seekAndPlay() {
                video.currentTime = seconds;

                const result = video.play();
                if (result && result.catch) {
                    result.catch(function (error) {
                        console.warn(
                            'Не удалось запустить видео:', error
                        );
                    });
                }
            }

            if (video.readyState >= 1) {
                seekAndPlay();
            } else {
                video.addEventListener(
                    'loadedmetadata',
                    seekAndPlay,
                    { once: true }
                );
                video.load();
            }
        });
    }

    if (document.readyState === 'loading') {
        document.addEventListener(
            'DOMContentLoaded',
            initVideoTimestamps
        );
    } else {
        initVideoTimestamps();
    }
})();