User:WhitePhosphorus/js/test.js

维基新闻,自由的新闻源

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

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer或Edge:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:Ctrl-F5
/*
所有用戶在加載任何頁面時,這裡的JavaScript都會加載
*/
/*
==慶祝標誌==
*/
/* 
jQuery( function( $ ) {
    var plogo = document.getElementById("p-logo");
    var url = "//upload.wikimedia.org/wikipedia/commons/" + wgUVS("e/eb/Wikinews-logo-zh-4000.png", "e/eb/Wikinews-logo-zh-4000.png");
    if ( navigator.appName == "Microsoft Internet Explorer" ) {
        if ( navigator.appVersion.match(/MSIE [78].0/) == null ) {
            plogo.getElementsByTagName("span")[0].style.filter = "progid:DXImageTransform."
                + "Microsoft.AlphaImageLoader(" + url + ")";
        }
        else {
            var a = plogo.firstChild;
            a.style.backgroundImage = "url(" + url + ")";
        }
    }
    else {
        var a = plogo.getElementsByTagName("A")[0];
        a.style.backgroundImage = "url(" + url + ")";
    }
} );
*/
/* 
== 辅助处理 ==
*/
//功能設定
if(!window.JSConfig){var JSConfig={};}
JSConfig.isEdit0=false; //设置是否显示编辑首段按钮
JSConfig.editSectionLink='right';//设置编辑按钮是否在右侧

// 移動元素
function elementMoveto(node, refNode, pos){//默认位置为refNode前
	if(node && refNode){
		var parent=refNode.parentNode;
		if (pos && pos=='after') {refNode=refNode.nextSibling;}
		try {
			if(refNode){
				parent.insertBefore(node, refNode);
			}else{
				parent.appendChild(node);
			}
		} catch (DOMException) {}
	}
}
//创建元素
function createElement(tag,children,props){
	var element = document.createElement(tag);
	if(!(children instanceof Array)){children=[children];}
	for(var i=0;i<children.length;i++){
		var child=children[i];
		if(typeof child=='string'){child=document.createTextNode(child);}
		if(child){element.appendChild(child);}
	}
	if(typeof props=='object'){
		for(var k in props){
			switch(k){
			case 'styles':
				var styles=props.styles;
				for(var s in styles){element.style[s]=styles[s];}
				break;
			case 'events':
				var events=props.events;
				for(var e in events){ addHandler(element,e,events[e]); }
				break;
			case 'class':
				element.className=props[k];break;
			default:
				element.setAttribute(k,props[k]);
			}
		}
	}
	return element;
}

//wiki URL
var wgProjectURL={
	en:'//en.wikipedia.org/',de:'//de.wikipedia.org/',fr:'//fr.wikipedia.org/',
	pl:'//pl.wikipedia.org/',ja:'//ja.wikipedia.org/',it:'//it.wikipedia.org/',
	nl:'//nl.wikipedia.org/',pt:'//pt.wikipedia.org/',es:'//es.wikipedia.org/',
	sv:'//sv.wikipedia.org/',//僅列前十名其它語言百科
	m:'//meta.wikimedia.org/',b:'//zh.wikibooks.org/',q:'//zh.wikiquote.org/',
	n:'//zh.wikinews.org/',wikt:'//zh.wiktionary.org/',mw:'//www.mediawiki.org/'
};
/**
 * 将页面名称转换为URL
 *
 * @param page 页面名称
 * @param paras 附加后缀对象,用空对象{}做参数可以取得源码
 */
function getWikiPath(page,paras){
	var reg=/^[a-z]+:/;
	var pre=page.match(reg);
	pre = pre && wgProjectURL[pre[0].replace(/:$/,'')];
	if (pre) {page=page.replace(reg,'');} else {pre='';}
	var url = pre + mw.config.get('wgScript') + '?title=' + encodeURI( page.replace( ' ', '_' ) );
	if(typeof paras=='object'){
		paras.ctype=paras.ctype||'text';
		paras.dontcountme=paras.dontcountme||'s';
		paras.action=paras.action||'raw';
		for(var k in paras){url += '&' + k + '=' + paras[k]; }
	}
	return url;
}

//JS、CSS导入模块
importedURLs = {}; //用以保證腳本和樣式只载入一次
function importScript( page ) {
	var src= /^https?:\/\//.test(page) ? page : getWikiPath(page,{'ctype':'text/javascript'});
	if( importedURLs[src] ) { return; }
	importedURLs[src] = true;
	var scriptElem = createElement( 'script',null,{'src':src,'type':'text/javascript'} );
	document.getElementsByTagName( 'head' )[0].appendChild( scriptElem );
}
function importStylesheet( page ) {
	var sheet= /^https?:\/\//.test(page) ? page : getWikiPath(page,{'ctype':'text/css'});
	if( importedURLs[sheet] ) { return; }
	importedURLs[sheet] = true;
	var styleElem = createElement( 'style', ['@import "'+sheet+'";'], {'type':'text/css'} );
	document.getElementsByTagName( 'head' )[0].appendChild( styleElem );
}

/*
== 新聞評論頁面 ==
*/
importScript("MediaWiki:Comments.js");

/*

== 中文轉換處理 ==
*/

//设置中文语言页
var htmlE=document.documentElement;
htmlE.setAttribute("xml:lang",mw.config.get('wgUserLanguage'));

//返回繁簡字串
function wgULS(cn,tw,hk,sg,zh){//保證每一語言有值
	return {'zh-cn':cn||sg,'zh-sg':sg||cn,'zh-tw':tw||hk,'zh-hk':hk||tw,'zh':zh||cn||tw||hk||sg,'zh-hans':cn||sg,'zh-hant':tw||hk}[mw.config.get('wgUserLanguage')];
}

/** lan enhanced Conversion ***********************************************************
 *
 *  Description: 根據當前用戶語言顯示相應內容
 *  Maintainers: Fdcn@zh.wikipedia
 *  Remakrs: Removed by Waihorace due to bug on IE
 */

/*

== 段落編輯連結 ==
*/
//JSConfig.isEdit0 设置是否出现「编辑首段」按钮
//对不需要编辑首段的页面,还可在页面中加 Template:NoEdit 模板来禁用。
//JSConfig.editSectionLink 設置「編輯」按鈕的位置
if (mw.config.get('wgIsArticle') && mw.config.get('wgAction') == "view") {
	//增加编辑首段按钮
	jQuery( function( $ ) {
		if(!JSConfig.isEdit0||(document.getElementById&&document.getElementById('no-edit-0'))){return;}
		var caEdit=document.getElementById&&document.getElementById('ca-edit');
		if (!caEdit){return;}
		var linkAttributes={
			'href':caEdit.firstChild.href + '&section=0',
			'title':wgULS('编辑正文所有标题之前的文字(通常称为首段或导言)','編輯正文所有標題之前的文字(通常稱首段或導言)'),
			'accesskey':'0'
		};

		//增加0按钮标签
		var caEdit0 = createElement(
			'li',
			[createElement('A',['0'],linkAttributes)],
			{id:'ca-edit-0'}
		);
		caEdit.className = 'istalk';
		elementMoveto(caEdit0,caEdit,"after");

		//增加条目标题下的“编辑首段”按钮
		var editsection0= createElement(
			'span',
			['[',createElement('A',[wgULS('编辑首段','編輯首段')],linkAttributes),']'],
			{'class':'editsection'}
		);
		var siteSub=document.getElementById&&document.getElementById('siteSub');
		elementMoveto( editsection0 , siteSub.firstChild );
	});
}

/*
== 取消修訂編輯摘要修正 ==
*/
/**
  fix edit summary prompt for undo
  this code fixes the fact that the undo function combined with the "no edit summary prompter" causes problems if leaving the edit summary unchanged
  this was added by [[:en:User:Deskana]], code by [[:en:User:Tra]]
 */
jQuery( function( $ ) {
	var autoSummary=document.getElementsByName('wpAutoSummary')[0];
	if (document.location.search.indexOf("undo=") != -1 && autoSummary)
	{
		 autoSummary.value='';
	}
});

/*
==Tabs==
*/
importScript('MediaWiki:Tabs.js');

/*
==WikiMiniAtlas世界地圖==
*/
/** WikiMiniAtlas *******************************************************
   *
   *  描述:WikiMiniAtlas是一個popup而可點選與拖曳的世界地圖。
   *               這個腳本將會讓所有的經緯度標示中顯示WikiMiniAtlas的popup開啟按鈕。
   *               由於被許多計畫使用,因此腳本放置在元維基中。
   *               更多資訊請詳見[[Meta:WikiMiniAtlas]]。
   *  創建者:[[:en:User:Dschwen]]
   */
 
importScript('m:MediaWiki:Wikiminiatlas.js');
/*

==Wikimedia媒體播放器==
*/

/** MediaWiki media player *******************************************************
  *
  *  Description: A Java player for in-browser playback of media files.
  *  Created by: [[:en:User:Gmaxwell]]
  */
importScript('Mediawiki:Wikimediaplayer.js');

/**
 * @source www.mediawiki.org/wiki/Snippets/Load_JS_and_CSS_by_URL
 * @rev 6
 */
mw.loader.using( ['mediawiki.util'], function () {
    var extraCSS = mw.util.getParamValue( 'withCSS' ),
        extraJS = mw.util.getParamValue( 'withJS' );

    if ( extraCSS ) {
        if ( extraCSS.match( /^MediaWiki:[^&<>=%#]*\.css$/ ) ) {
            importStylesheet( extraCSS );
        } else {
            mw.notify( '只允许从MediaWiki名字空间加载。', { title: '无效的withCSS值' } );
        }
    }

    if ( extraJS ) {
        if ( extraJS.match( /^MediaWiki:[^&<>=%#]*\.js$/ ) ) {
            importScript( extraJS );
        } else {
            mw.notify( '只允许从MediaWiki名字空间加载。', { title: '无效的withJS值' } );
        }
    }
});