submitした後同ページで同じ位置に戻る

って普通に"#〜"やるとa nameの位置がページの先頭になっちゃって必ずズレて非常に腹立たしいところがあるのでそういうメソッド作ってみた
submitする前にコレを呼ぶ

function savePosition(){

	for(i=0;i<document.forms.length;i++){
			document.forms[i].action = document.forms[i].action + "#t-" + document.body.scrollTop + "-l-" + document.body.scrollLeft;
	}

}

でページのonloadがの直前でコレを呼ぶ

function loadPosition(){
	var left = 0;
	var top = 0;
	
	var urlname = document.URL.split("#");
	if(urlname[1] != null){
		var posl = urlname[1].split("-");
		if(posl.length == 4){
			top = posl[1];
			left= posl[3];
			document.body.scrollTop = top;
			document.body.scrollLeft = left;
		}
	}
}

おススメは/bodyの前につけること。body onloadだと画像の読み込み待っちゃうから。

仕組みは簡単でスイマセン。
URLの#〜に「t-23-l-25」みたいにscrollTopとscrollLeftの情報入れておいて、次のページでそれを配列にして取り出して代入してるだけ。
今みると

var urlname = document.URL.split("#");

の箇所は普通に

var urlname = document.location.hash.replace("#","");

とかでも良かったね。まあいいや。

一応主要なブラウザでは動くみたいです。
副作用として読み込みが早いとAJAXっぽく見えて最先端なサイトに見えなくもないので嬉しくなる人もいるかもしれないということがあります。