注意:在发布之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
$(function() {     /** Advanced Site Notices ********      * Allow to custom dynamic site notices      * Maintainer: [[User:PhiLiP]]      */      if (window.closeASNForever || $('#siteNotice').length < 0 || mw.config.get('wgAction') === 'edit' || mw.config.get('wgAction') === 'submit') {         return;     }     if (typeof(window.customASNInterval) === 'undefined') {         window.customASNInterval = 15;     }     var langConv = require('ext.gadget.HanAssist').conv;      var cname = 'dismissASN';     var cval = $.cookie(cname);     if (cval == '') {         cval = -1;     }     var rev = 0;     var toid = null;      var tb = $('<table id="asn-dismissable-notice" width="100%"/>');     var ct = $('<div id="advancedSiteNotices" style="word-break:break-word" class="mw-parser-output"/>');     var sd = $('<a href="#"/>').text(langConv({hans: '关闭', hant: '關閉'}));     tb.append($('<tr/>').append($('<td/>').append(ct)).append($('<td/>').append('[').append(sd).append(']')));     var nts = null;     var styles = [];      sd.click(function() {         $.cookie(cname, rev, {             expires: 30,             path: '/',             secure: true         });         clearTimeout(toid);         tb.remove();         return false;     });      var matchCriteria = function(nt) {         var cache = nt.data('asn-cache');         if (cache !== undefined) {             return cache;         }         var criteria = nt.attr('data-asn-criteria');         if (criteria === undefined) {             criteria = nt.attr('class') ? 'false' : 'true';             if (nt.hasClass('only_sysop')) {                 criteria += '||in_group("sysop")';             }             if (nt.hasClass('only_logged')) {                 criteria += '||in_group("user")';             }             if (nt.hasClass('only_anon')) {                 criteria += '||!in_group("user")';             }             if (nt.hasClass('only_zh_cn')) {                 criteria += '||only_for("zh-cn")';             }             if (nt.hasClass('only_zh_hk')) {                 criteria += '||only_for("zh-hk")';             }             if (nt.hasClass('only_zh_sg')) {                 criteria += '||only_for("zh-sg")';             }             if (nt.hasClass('only_zh_tw')) {                 criteria += '||only_for("zh-tw")';             }         } else {             criteria = decodeURIComponent(criteria.replace(/\+/g, '%20'));             criteria = criteria.trim();         }         if (criteria === '') {             criteria = 'true';         }         var testCriteria = function() {             var in_country = function(country) {                 return window.Geo === undefined || Geo.country === country;             },             in_region = function(region) {                 return window.Geo === undefined || Geo.region === region;             },             in_city = function(city) {                 return window.Geo === undefined || Geo.city === city;             },             in_group = function(group) {                 return $.inArray(group, mw.config.get('wgUserGroups')) > -1;             },             only_for = function(userlang) {                 return userlang === mw.config.get('wgUserLanguage');             };             // FIXME: This shouldn't be using eval on data entered in wikitext. If that data is malformed it will throw an exception e.g. criteria = "(false))"             try {                 return eval(criteria);             } catch (e) {                 return false;             }         };         cache = testCriteria();         nt.data('asn-cache', cache);         return cache;     };      var loadNotices = function(pos) {         if (!tb.length) {             return;         }         ct.css('min-height', ct.height() + 'px');         tb.css('min-height', tb.height() + 'px');         var l = nts.length;         var nt = null;         var rt = 0;         while (rt++ < l) {             nt = $(nts[pos]);             if (matchCriteria(nt)) {                 break;             }             pos = (pos + 1) % l;         }         if (rt >= l) {             return;         }         if (typeof nt.data('asn-style') == 'string') {             var style = mw.util.addCSS(decodeURIComponent(nt.data('asn-style').replace(/\+/g, '%20')));             nt.data('asn-style', null);             nt.data('asn-style-id', styles.length);             style.disabled = true;             styles.push(style);         }         if (typeof nt.data('asn-html') == 'string') {             nt.data('asn-html-raw', decodeURIComponent(nt.data('asn-html').replace(/\+/g, '%20')));             nt.data('asn-html', null);         }         var styleId = nt.data('asn-style-id');         nt = nt.data('asn-html-raw') || nt.html();         var cthtml = ct.html();         if (cthtml) {             if (cthtml !== nt) {                 ct.stop().fadeOut(function() {                     $.each(styles, function() {                         this.disabled = true;                     });                     if (styles[styleId]) {                         styles[styleId].disabled = false;                     }                     ct.html(nt);                     // animation try /catched to avoid TypeError: (Animation.tweeners[prop]||[]).concat is not a function error being seen in production                     try {                         ct.fadeIn();                     } catch (e) {}                 });             }         } else if (rev == cval) {             return;         } else {             $.cookie(cname, null);             tb.appendTo($('#siteNotice'));             if (styles[styleId]) {                 styles[styleId].disabled = false;             }             ct.html(nt).fadeIn();         }         toid = setTimeout(function() {             loadNotices((pos + 1) % l);         }, window.customASNInterval * 1000);     };      new mw.Api({         ajax: {             headers: {                 'Api-User-Agent': 'w:zh:MediaWiki:Gadget-AdvancedSiteNotices.js'             }         }     }).get({         page: 'Template:AdvancedSiteNotices/ajax',         variant: mw.config.get('wgUserVariant'),         prop: 'text',         action: 'parse',         format: 'json',         maxage: 3600,         smaxage: 3600     }).then(function(json) {         if (!json || !json.parse || !json.parse.text || !json.parse.text['*']) return;         json = $('<div/>').html(json.parse.text['*']).find('ul.sitents');         nts = $('li', json);         rev = json.data('asn-version');         var l = nts.length;         loadNotices(Math.floor(Math.random() * l));     }).catch(function(e) {         console.error('[AdvancedSiteNotices]: ', JSON.stringify(e));     }); });