MediaWiki:BilibiliVideo.js:修订间差异
无编辑摘要 |
无编辑摘要 |
||
(未显示同一用户的1个中间版本) | |||
第10行: | 第10行: | ||
function generate(index, ele) { | function generate(index, ele) { | ||
ele.classList.add('loaded'); | ele.classList.add('loaded'); | ||
// Variables | // Variables | ||
第74行: | 第73行: | ||
} | } | ||
mw.hook('wikipage.content').add(init); | |||
})(window.jQuery, window.mediaWiki); | })(window.jQuery, window.mediaWiki); |
2023年8月16日 (三) 08:50的最新版本
/** * @name BilibiliVideo.js * @author 机智的小鱼君 * @description Add video from bilibili.com to article */ (function ($, mw) { 'use strict'; var msg; function generate(index, ele) { ele.classList.add('loaded'); // Variables var data = ele.dataset; var videoId; var av = data.av; var bv = data.bv; var page = data.page || data.param || 1; // data-param is typo made by the author in the old version var size = data.size || data.width || '80%'; // Verify data // Video ID must be set if (!av && !bv) { return $('<span>', { class: 'error', text: msg('undefineAv').escape() }); } // Video ID if (bv) { bv = bv.replace(/^bv/i, ''); videoId = 'bvid=' + bv; } else if (av) { av = av.replace(/^av/i, ''); // AV number must be positive integer if (!/^[1-9]\d*$/.test(av)) { return $('<span>', { class: 'error', text: msg('invalidAvNumber').escape() }); } videoId = 'aid=' + av; } // Page of video must be positive integer if (!/^[1-9]\d*$/.test(page)) { page = 1; } // build iframe element var $iframe = $('<iframe>', { class: 'bili-show bilibili-iframe', id: bv ? 'bv-' + bv : 'av-' + av, src: 'https://player.bilibili.com/player.html?' + videoId + '&page=' + page, scrolling: 'no', border: 0, frameborder: 'no', framespacing: 0, allowfullscreen: true }).css('width', size); // Resize function resizeBilibili() { $iframe.height(function () { return $(this).width() / 4 * 3; }); } // Run $iframe.ready(resizeBilibili); $(window).resize(resizeBilibili); $('.mw-collapsible-toggle').click(resizeBilibili); // Return element $(ele).append($iframe); } function init($content) { $content.find('.BiliVideo:not(.loaded), .BilibiliVideo:not(.loaded)').each(generate); } mw.hook('wikipage.content').add(init); })(window.jQuery, window.mediaWiki);