MediaWiki:Common.js
注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5。
/* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ // 用于对CardSelectTr表格进行筛选排序 引用自星穹轨道WIKI /* // 筛选按钮表格 */ /* 这里的任何JavaScript将为所有用户在每次页面载入时加载。 */ // 判断是否触摸屏幕,强制设置ua if (navigator.maxTouchPoints && navigator.maxTouchPoints > 2) { Object.defineProperty(navigator, 'userAgent', { value: navigator.userAgent.replace('Macintosh', 'ipadpro'), writable: false }); }; $(function() { //解决手机上按键选项hover效果不消失的问题 //筛选页面列表筛选 $('.filter li').on('mouseenter touchstart',function(e) { $(this).children().addClass('hover'); }); $('.filter li').on('mouseleave touchend',function(e) { $(this).children().removeClass('hover'); }); $('.filter li').on('click',function(e) { $(this).siblings().children().removeClass('active'); $(this).children().toggleClass('active'); var item = new Array(); $('.filter').find('.active').parent().each(function() { var data_type = $(this).parent().attr('data-type'); item.push("[data-param" + data_type + "='" + $(this).attr("data-value") + "']"); }); if(item.length != 0) { $('#wiki_table tbody').children().hide(400); $('#wiki_table tbody').children(item.toString().replace(/,/g, '')).show(300); //$('#wiki_table tbody').children().not(item.toString().replace(/,/g, '')).hide(1000); } else { $('#wiki_table tbody').children().show(300); } }); }); $(function InitCardSelect() { var self = {}; var selectOptions; //所有筛选按钮 var filters = {}; //当前筛选规则 var filterKeys = []; //所有筛选Key var showAll = true; //不筛选,显示全部 var tableRows; //所有要被筛选的行 var computedRows; //筛选后的行 var $sorter; //当前进行排序的表头 var sortDesent = false; //反向排序 function isNil(s) { return s === '' || s === undefined || s === null || s === false } //点击筛选按钮时 function OnSelectOptionClick(e) { var $x = e.data; e.preventDefault(); var label = '['+$.trim($x.text())+'] 筛选'; console.time(label); //显示全部 if ($x.FilterKey == 0) { for (i in selectOptions) { selectOptions[i].Select = false; selectOptions[i].removeClass('selected'); } filters = {}; showAll = true; //更新表格 self.FilterRows(); console.timeEnd(label); return; } showAll = false; var select = !$x.Select; $x.Select = select; //变更筛选状态 var key = $x.FilterKey; filters[key] = filters[key] || {}; var opt = $x.FilterOpt == "AND" ? "AND" : "OR"; filters[key][opt] = filters[key][opt] || []; if (select) { filters[key][opt].push($x.FilterValue); } else { filters[key][opt] = filters[key][opt].filter(function(x) { return x !== $x.FilterValue; }); if (filters[key][opt].length < 1) delete filters[key][opt]; } select ? $x.addClass('selected') : $x.removeClass('selected'); self.FilterRows(); console.timeEnd(label); } function OnHeaderSortClick(e) { var $x = e.data; e.preventDefault(); var label = '['+$.trim($x.text())+'] 排序'; console.time(label); if ($sorter !== $x) { //第一次:新的排序 $sorter = $x; sortDesent = false; } else if (!sortDesent) { //第二次:切换排序 sortDesent = true; } else { //第三次:不进行排序 $sorter = null; } self.SortRows(); console.timeEnd(label); } //初始化 self.Init = function () { selectOptions = $('.cardSelectOption').toArray().map(function(x) { var $x = $(x); var dataOption = $.trim($x.data('option')); var dataGroup = $.trim($x.data('group')); if (isNil(dataOption) || isNil(dataGroup)) return $x; var splt = dataOption.split('|'); $x.FilterKey = dataGroup; $x.FilterValue = $.trim(splt[1]); $x.FilterOpt = $.trim($x.data('opt') || 'OR').toUpperCase(); if (filterKeys.indexOf(dataGroup) < 0) filterKeys.push(dataGroup); $x.click($x, OnSelectOptionClick); return $x; }); //$head = $('#CardSelectTabHeader'); tableRows = $('#CardSelectTr>tbody>tr').toArray().map( function(x) { var $x = $(x); //if (x == $head[0]) continue; for (i in filterKeys) { var key = filterKeys[i]; var val = $x.data('param'+key); if (val === undefined) continue; if (typeof val == 'number'){ val = val.toString(10); } var splt = val.split(','); for (j in splt) { var s = $.trim(splt[j]); if (!isNil(s)) { $x.FilterData = $x.FilterData || {}; $x.FilterData[key] = $x.FilterData[key] || []; $x.FilterData[key].push(s); } } } return $x; }); //computedRows = tableRows.concat([]); $('#CardSelectTr>thead>tr>th').each(function(index, x) { var $x = $(x); $x.off('click').off('mousedown'); if ($x.hasClass('headerSort')) { $x.Index = index; //$x.SortKey = $x.data('group'); $x.click($x, OnHeaderSortClick); } }); } //t1中包含t2中所有项 function includeAll(t1, t2) { for (i in t2) { if (t1.indexOf(t2[i]) < 0) return false; } return true; } //t1中包含t2中的任一项 function includeAny(t1, t2) { if (t2.length == 0) return true; for (i in t2) { if (t1.indexOf(t2[i]) > -1) return true; } return false; } //使用show/hide来显示表格行 self.FilterRows = function() { if (showAll) { filters = {}; } $('#CardSelectTr>tbody').hide(); for (var idx in tableRows) { var $x = tableRows[idx]; var data = $x.FilterData; var hide = false; for (key in filters) { hide = !data || !data[key]; if (!hide && filters[key]['AND']) { hide = !includeAll(data[key],filters[key]['AND']); } if (!hide && filters[key]['OR']) { hide = !includeAny(data[key],filters[key]['OR']); } if (hide) break; } if (!hide != !$x.Hide) { $x.Hide = hide; hide ? $x.hide() : $x.show(); } } $('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp'); $('#CardSelectTr>tbody').show(); $sorter = null; } function grabSortData($tr, index) { $tr.SortData = $tr.SortData || []; if ($tr.SortData[index] !== undefined) return $tr.SortData[index]; var td = $tr.children('td')[index]; if (!td) { $tr.SortData[index] = -1; return -1; } var text = $.trim(td.textContent); $tr.SortData[index] = text; return text; } //对行排序,不显示的行会被移除 self.SortRows = function() { //var residues = []; if (!$sorter) { computedRows = tableRows.filter(function($x) { return !$x.Hide; }); $('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp'); } else if (!sortDesent) { var index = $sorter.Index; computedRows = tableRows.filter(function($x) { return !$x.Hide; }); computedRows.sort(function compareFunction($x, $y) { var x = grabSortData($x, index); var y = grabSortData($y, index); var nx = + x; var ny = + y; return (isNaN(nx) || isNaN(ny)) ? isNaN(nx) && isNaN(ny) ? x < y ? -1 : 1 : isNaN(nx) ? 1 : -1 //字符串排后 : nx === ny ? 0 : nx < ny ? -1 : 1; //数值小的排前 //console.log (`${x} ~ ${y} => ${ret}`); //return ret; }); $('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp'); $sorter.addClass('headerSortDown'); } else { computedRows.reverse(); $('#CardSelectTr .headerSort').removeClass('headerSortDown headerSortUp'); $sorter.addClass('headerSortUp'); } $('#CardSelectTr>tbody').hide() .prepend(computedRows) .show(); } $('.cardSelectOption').off('click').off('mousedown'); if ($('#CardSelectTabHeader').parent().is('tbody')){ $('#CardSelectTr').prepend( $('<thead/>').append($('#CardSelectTabHeader'))); } self.Init(); console.log('CardSelectTr.js Initialized.'); return self; }); /*筛选结束*/ /* -- 为页面加载JS脚本或CSS样式表 -- */ /* 参见[[模板:ResourceLoader]]*/ /* 来源:碧蓝航线WIKI*/ $('.resourceLoader').each(function() { var $x = $(this); var text = $.trim($x.text()); if (!text) return; //加载模块 if ($x.data('isModule') == true) return mw.loader.load(text); //自动补充MediaWiki命名空间 var ns = text.match('^.*?:'); if (!ns) text = 'MediaWiki:' + text; //加载CSS样式表 var mime = ($x.data('mime') || "text/javascript").toLowerCase(); if (mime == "text/css") { if (text.slice(-4).toLowerCase() !== '.css') text = text + '.css'; //if ($x.data('debug') !== true) text = text + '&debug=false'; return mw.loader.load("//wiki.biligame.com"+mw.config.values.wgScriptPath+"/index.php?title="+text+"&action=raw&ctype=text/css", "text/css"); } //加载JS脚本 if (ns && ns[0].toLowerCase() !== 'mediawiki:') { return console.log('ResourceLoader: 不允许加载MediaWiki以外的js脚本'); } if (text.slice(-3).toLowerCase() !== '.js') text = text + '.js'; //if ($x.data('debug') !== true) text = text + '&debug=false'; return mw.loader.load("//wiki.biligame.com"+mw.config.values.wgScriptPath+"/index.php?title="+text+"&action=raw&ctype=text/javascript", "text/javascript"); }); //音频事件 $('.audio-controls').click(function () { var audio = $(this).parent().find('audio').get(0); var controlBtn = $(this).find('.icon-btn'); audio.addEventListener('ended', function() { audio.currentTime = 0; audio.pause(); controlBtn.removeClass('icon-pause').addClass('icon-play'); }, false); // 监听播放完成事件 // 改变暂停/播放icon if (audio.paused) { audio.play(); controlBtn.removeClass('icon-play').addClass('icon-pause'); } else { audio.pause(); controlBtn.removeClass('icon-pause').addClass('icon-play'); } }) /* ==Popover弹出框== */ //找到Bootstrap初始化的jQuery function getjQuery(jquery) { var x = [jquery, $, window.$, window.jQuery]; var _j = window.$; for (var i = 0; i < 4; i++) { var j = x[i]; if (j && j.fn) { if (typeof j.fn.popover == 'function') return j; j.noConflict(); j = window.$; window.$ = _j; if (j && j.fn && typeof j.fn.popover == 'function') return j; } } throw('getjQuery:未能找到Bootstrap初始化的jQuery'); } $(function() { var $ = getjQuery(); $('[data-toggle="wafer-popover"]').popover({ container: false, content: function() { var $c = $(this); var content = '<p class="head">' + ($c.data('head') || '详细信息') + '</p>' + '<p>' + $c.data('text') + '</p>'; return content; }, html: true, placement: 'auto bottom', template: '<div class="popover wafer-popover" role="tooltip"><div class="arrow"></div><div class="popover-content"></div></div>', trigger: 'hover' }).find('a').attr('title',''); }); /* --Popover弹出框-- */ /* == 加载Bikit == */ try { mw.loader.load('//wiki.biligame.com/wiki/MediaWiki:Bikit.js?action=raw&ctype=text/javascript');} catch(e) {} /* -- 加载Bikit -- */ /* 技术处理外链 来源:异星工厂WIKI */ $("a").each(function(){ url=$(this).attr("href"); if(typeof(url)!="undefined"){ key=["game.bilibili.com","space.bilibili.com","wiki.biligame.com","qun.qq.com"]; var status=false; key.forEach(function(k){ status=url.replace(/^.+linkfilter\/\?url=https*:\/\/([^\/]+).*$/ig, "$1").indexOf(k)>=0||status; }); url=status?url.replace(/^.+linkfilter\/\?url=(.+)/g, "$1"):url; $(this).attr("href",url); } }); //编辑器插件SmartClick引入 $(function(){ mw.loader.load("//wiki.biligame.com" + mw.util.wikiScript("") + "?title=MediaWiki:SmartClick.js&action=raw&ctype=text/javascript", "text/javascript"); console.log("SmartClick.js initialized!"); }); /* 优化版本差异,爱来自 编辑组 Lu 39886146 */ mw.loader.load("/tools/MediaWiki:DiffTool.js?action=raw&ctype=text/javascript&rand=", "text/javascript"); /* 切换标签套娃修复 */ $(".resp-tabs .resp-tabs-list .bili-list-style").unbind("click").click(function() { $(this).addClass("active").siblings().removeClass("active"); var e = $(this).index(); $(this).parents(".resp-tabs").eq(0).children(".resp-tabs-container").children(".resp-tab-content").eq(e).show().siblings().hide(), $(".resp-accordion-handle").hide() }) /* ==雷达图== */ if ($('div[data-type="canvas"]')[0]) { mw.loader.load("https://wiki.biligame.com/blhx/index.php?title=MediaWiki:Info.js&action=raw&ctype=text/javascript"); } /* --雷达图-- */ (function(){ function IsPC(){ var userAgentInfo = navigator.userAgent; var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"); var flag = true; for (var v = 0; v < Agents.length; v++) { if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; } } return flag; } if(IsPC()){ pc_check(); } function pc_check(){ //卡牌展示 function imgShow(){ var imgs=document.getElementById('img-box'); if (!imgs) return; var imgList=imgs.getElementsByTagName('ul')[0].getElementsByTagName('li'); var p=document.getElementById('p-btn'); var n=document.getElementById('n-btn'); var imgBtn=document.getElementById('img-btn'); var btnList=imgBtn.getElementsByTagName('li'); var iNub=0; var times=null; addBtn(); //add function addBtn() { for(var i=0;i<imgList.length;i++) { var addLi=document.createElement('li'); imgBtn.appendChild(addLi); }; } for(var j=0;j<btnList.length;j++) { btnList[0].className='sel'; btnList[j].index=j; btnList[j].onclick=show; } imgs.onmouseover=function() { clearInterval(times); } imgs.onmouseout=function(){ times=setInterval(function(){ next(); },2000); } //下一个 n.onclick=next; //上一个 p.onclick=function(){ iNub=iNub-1; if(iNub<0){ iNub=btnList.length-1; } soll(); } //tab function show(){ for(var j=0;j<btnList.length;j++){ btnList[j].className=''; imgList[j].className=''; this.className='sel'; imgList[this.index].className='show'; iNub=this.index; } } //next function next(){ iNub=iNub+1; if(iNub>=btnList.length){ iNub=0; } soll(); } //soll function soll() { for(var i=0;i<btnList.length;i++){ btnList[i].className=""; imgList[i].className=""; } btnList[iNub].className="sel"; imgList[iNub].className="show"; } times=setInterval(function(){next();},2000); } imgShow(); /* 图片轮播 */ if ($('#pic-ctrl span').length > 1 && $('#pic-ctrl span').length == $('.pic-box').length) { setLoop(); $('.pic').hover(function(){clearInterval(itimer)}, function(){setLoop()}); $('#pic-ctrl span').each(function(e){ $(this).mouseover(function(){changePicFocus(e);}) }) } var iidx=null; function changePicFocus(idx) { $('#pic-ctrl span').removeClass().eq(idx).addClass('current'); $('.pic-box').hide().eq(idx).show(); iidx = idx; }; //图片滑过显示下方提示 function hoverImage(){ $('.imageSlider').mouseover(function(){ $(this).children('span').stop().animate({'height':'26px'},200); }) $('.imageSlider').mouseout(function(){ $(this).children('span').stop().animate({'height':'0px'},200); }) } function setLoop() { itimer = setInterval(function(){ iidx==$('#pic-ctrl span').length-1 ? iidx=0 : iidx++; changePicFocus(iidx); }, 2000); }; }; })(); /* --趣味测试-- */ (function(){ var mod={ events:null, //pc返回true IsPC:function(){ var userAgentInfo=navigator.userAgent; var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"); var flag = true; for (var v = 0; v < Agents.length; v++) { if (userAgentInfo.indexOf(Agents[v]) > 0) { flag = false; break; } } return flag; }, int:function(submitBtn){ mod.sub=submitBtn; if(mod.IsPC()){ mod.events='click'; }else{ mod.events='touchstart'; document.getElementsByTagName('body')[0].style.minWidth='100px'; }; mod.checks(); }, checks:function(){ var ev=mod.events, btn=mod.sub; $('.input-lg').attr('contenteditable','true'); //禁止按回车键时换行 $('.detection-text').on("keydown",function(e){ var keyCode=0,e=e||event; if (e.keyCode == 13){ e.preventDefault(); } }); //禁止按回换行 btn.on(ev,function(){ var vals=$.trim($('.input-lg').text()); if(vals===''){ $('.result').html(''); $('.result').html('<h3>请您输入要诊断的内容</h3>'); }else{ var len=$('#data span').length-1; if(len<0){ alert('页面标签错误'); return false; } var newurl = '/'+window.wgWikiname+"/joyme_api.php?action=InterestTesting"; $.ajax({ url:newurl, type:"get", async: false, data:{"vals":vals,"len":len}, success:function(msg){ var data = eval('(' + msg + ')'); if(data['rs']==1){ $('.result').html(''); var title=$('#data span').eq(data['result']).attr('title'); img_url=$('#data span').eq(data['result']).attr('data-img'); url=$('#data span').eq(data['result']).attr('data-url'); var html='<span>'+vals+title+'</span><a href="'+url+'"><img src="'+img_url+'"></a>'; $('.result').html(html); }else{ alert('程序异常'); } } }) } }); } }; mod.int($('.submit')); /* --趣味测试end-- */ /* --分享-- */ var bdshareurl = window.location.href; var bdsharepic = $('#bdsharepic img').attr('src'); var bdsharetitle = document.title; bdsharedesc = $('#bdsharedesc').html(); $('.bdsharebuttonbox').html('<a href="#" class="bds_qzone" data-cmd="qzone"></a><a href="#" class="bds_tsina" data-cmd="tsina"></a><a href="#" class="bds_tqq" data-cmd="tqq"></a><a href="#" class="bds_renren" data-cmd="renren"></a><a href="#" class="bds_weixin" data-cmd="weixin"></a><a href="#" class="bds_tieba" data-cmd="tieba"></a>'); window._bd_share_config = { common : { bdText : bdsharetitle, bdDesc : bdsharedesc, bdUrl : bdshareurl, bdPic : bdsharepic }, share : [{ "bdSize" : 16 }], } with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?cdnversion='+~(-new Date()/36e5)]; })(); /* --分享end-- */ // quickview var qvel = document.querySelectorAll(".msquickview"); var qvitem = ""; for (var i = 0; i < qvel.length; i++) { qvel[i].addEventListener( "mouseenter", function () { msqv(this); }, false ); qvel[i].addEventListener( "mousemove", function () { msqvmove(this); }, false ); qvel[i].addEventListener( "mouseleave", function () { msqvhide(this); }, false ); } function msqv(a) { var qvigp = a.children; for (var i = 0; i < qvigp.length; i++) { if (qvigp[i].className == "msqvitem") { qvitem = qvigp[i]; break; } } qvitem.style.display = "block"; } function msqvmove(a) { var qvb = event || window.event; if (window.innerWidth <= qvb.clientX + qvitem.clientWidth + 10) {qvitem.style.right ="5px";qvitem.style.left ="unset";} else {qvitem.style.left = qvb.clientX + 5 + "px";qvitem.style.right ="unset";}; qvitem.style.top = qvb.clientY + 5 + "px"; // console.clear(); // console.log(window.innerWidth); // console.log("悬浮物宽度"+qvitem.clientWidth); // console.log(document.body.clientWidth - qvitem.clientWidth+"差值"); // console.log(qvb.clientX); // console.log(qvb.clientX + qvitem.clientWidth - 5); } //position:fixed;clientXY=窗口位置;pageXY=文档位置; function msqvhide(a) { qvitem.style.display = "none"; } // quickview end /* -- B站视频 抄自碧蓝航线 --*/ var BiliVideo=document.getElementsByClassName("BiliVideo") for(var i=0,ilen=BiliVideo.length;i<ilen;i++){ var v=BiliVideo[i].dataset.v if(!isNaN(v)){ v="aid="+v } else if(/^av[0-9]+$/i.test(v)){ v="aid="+v.substr(2) } else if(/^bv[a-z0-9]+$/i.test(v)){ v="bvid=BV"+v.substr(2) } else{ v="bvid=BV"+v } var p="page="+(Number(BiliVideo[i].dataset.p)||1) var w=Number(BiliVideo[i].dataset.w)||600 var h=Number(BiliVideo[i].dataset.h)||421 BiliVideo[i].innerHTML='<iframe src="//www.bilibili.com/blackboard/newplayer.html?'+v+'&'+p+'&autoplay=" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" width="'+w+'" height="'+h+'" style="max-width:100%;max-height:60vw;"></iframe>' }