コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

利用者:Mage Whopper/postsizecheck-script.js

お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。

多くの WindowsLinux のブラウザ

  • Ctrl を押しながら F5 を押す。

Mac における Safari

  • Shift を押しながら、更新ボタン をクリックする。

Mac における ChromeFirefox

  • Cmd Shift を押しながら R を押す。

詳細についてはWikipedia:キャッシュを消すをご覧ください。

/*
	投稿時サイズチェッカー
	メイン名前空間への投稿時、ページが短か過ぎるともっと調べてから投稿するように促します
	minsizeに指定した値以下の時確認
	[[User:Cpro/checksigniture.js]]を参考にさせていただきました。
	ライセンスはパブリックドメインとします。
	These scripts below are under public domain.
	You can freely use, modify or redistribute, at your own risk.
	
	読み込む側でpsg_minsize を指定すると、閾値になります。
	例)var psg_minsize=2000; //閾値2kB
*/

function on_post_size_check(){
	if(wgNamespaceNumber!=0)return;//mainのみ
	if(!((wgAction=="edit")||(wgAction=="submit")))return;//編集時のみ
	if(typeof psg_minsize == 'undefined'){ps_minsize=1000;}else{ps_minsize=psg_minsize;}
	//if(wgArticleId!=0)return;//新規のみ
	var save_button=document.getElementById('wpSave');
	if(!save_button)return;
	if(document.all && document.attachEvent){//MSIE
		save_button.attachEvent("onclick",onpost_size_warn);
	}else{
		save_button.addEventListener('click',onpost_size_warn,true);
	}

	function onpost_size_warn(e){
		var s=document.getElementById('wpTextbox1').value;
		s=s.replace(/\n+$/,'');//末尾の改行除去
		var t=s.replace(/<!--.*?-->/g,'');
		var cm='';
		if(s.length!=t.length)cm="\nコメント外には "+t.length+" 文字("+utf8size(t)+"バイト)\n";
		if(utf8size(t)<ps_minsize){
			var str="投稿しようとしているテキストは "+s.length+" 文字("+utf8size(s)+"バイト)"+cm+"しかありません。\nこのまま投稿しますか?";
			if(1){
				str+="\nアラート閾値:"+ps_minsize+" バイト";
			}
			
			if(!window.confirm(str)){
				if(document.all && document.attachEvent){//MSIE
					window.event.returnValue=false;
				}else{
					e.preventDefault();
				}
			}
		}
	}
	function utf8size(s){//PHP-UTF8でのサイズ計算
		var c=0;var i,n,m;
		for(i=0;i<s.length;i++){
			n=encodeURI(s.charAt(i));
			if(n.length>2){
				m=n.replace(/%/g,'');
				c+=(m.length/2);
			}else{
				c++;
			}
		}
		return c;
	}
}

$(on_post_size_check);