怪盗王座ツールあれやこれや

怪盗・戦国用のツール群を提供しています。(フィルタ関係以外の)コメントは、内容にかかわらず、最新の記事にお願いします。

FFB便利メニュー v1.01 - 複数回売却/金庫+独立

2012-11-14 13:54:20 | 日記
 反響も無いし、使っている人いないのかな?
 昨晩、前記事に追記した『「集計中」が検出されない修正』もお忘れなく。

 基本的には、『「売却」や「金庫入り」が2回目以降、無反応になる』バグの修正です。ついでに、独立した拡張機能にしました。
 名前も斬新に "cxtmenu_ffb" から "ffb-cxtmenu" に変更しました。
 知り合いに『使い方が解らん』と言われてしまいました。使い方以前にインストールが面倒ですからね。添付文章の「使用方法」も少しだけ直しました。どういう説明をすれば解り易いのですかね?

 バグは「一つの画面からフォームを複数回発行できない」現象が原因です。
 送信ボタンを2回クリックした(してしまった) 場合に同じWeb要求が2回発行されてしまう事に起因するトラブルを未然に防いでくれるという、いまどきのブラウザのありがた迷惑な挙動が諸悪の根源です。「バトル検索」の実装の際もこの挙動のために泣く泣く他の方法に切り替えたものです。せめて target="_blank" の時くらいこの挙動を回避して欲しいよなー。
 ネットの海には『複数回submitしない』方法があふれ返っていますが、『何度でもsubmitする』方法は探しても見つかりませんでした。結論として、一時的な iframe の下に form を作ればOKって事です。
 社会貢献(?) のために、問題のコードを貼り付けておきます。
----- 何度でもsubmitできるコード : ここから -----
function contextMenu_ffb__post(open_form){
	var iframe = document.createElement("iframe");
	iframe.style.display = "none";
	document.body.appendChild(iframe);
	var doc = iframe.contentWindow.document;
	
	var obj_form = doc.createElement("form");
	obj_form.setAttribute("action", open_form.action);
	obj_form.setAttribute("method", open_form.method);
	obj_form.setAttribute("target", "_blank");
	for(var act_name in open_form.param_hash){
		var act_value = open_form.param_hash[act_name];
		var input = document.createElement("input");
		input.setAttribute("type", "hidden");
		input.setAttribute("name" , act_name);
		input.setAttribute("value", act_value);
		obj_form.appendChild(input);
	}
	doc.body.appendChild(obj_form);	// Firefox だと必要らしい
	obj_form.submit();
	document.removeChild(iframe);
}
----- 何度でもsubmitできるコード : ここまで -----

[余談]
 『あふれかえる』って単語が国語辞典(大辞泉+大辞林)に載っていなかったんだけど、なぜ?

以下から、どうぞ。