編集(管理者用) | 編集 | 差分 | 新規作成 | 一覧 | RSS | 表紙 | 検索 | 更新履歴

Formlet

bookmarkletからフォーム送信するためのJavaScript。

GETリクエストであれば文字列連結でURLを作っても可能ですが、POSTリクエストはさすがにform要素を使う必要があったので、そのための手続きを楽に行うためのクラスを作ってみました。

※JavaScriptのオブジェクト指向をまだきちんと理解していないため、変な書き方をしているかも知れません。

function Formlet(url, target, method) {
	this._form = document.createElement('form');
	this._form.action = url;
	if (target) this._form.target = target;
	if (method) this._form.method = method;
	document.body.appendChild(this._form);

	this.param = function(name, value){
		var el = document.createElement('input');
		el.type = 'hidden';
		el.name = name;
		el.value = value;
		this._form.appendChild(el);
	};
	this.submit = function() {
		this._form.submit();
		document.body.removeChild(this._form);
	};
}
new Formlet(url, target, method)
form要素を作成する。urlはリクエスト先のURL。targetはターゲットウィンドウ(フレーム)名(省略可)。methodはメソッド名(getまたはpost。省略時はget)。
formlet.param(name, value)
フォームコントロール名とそれに対応する値を追加する。
formlet.submit()
フォーム送信を実行する。

選択テキストをエキサイト翻訳へ送信。

(function(){
	var url = 'http://www.excite.co.jp/world/english/';
	var origin = (new SelectedTexts).first;
	var mode = origin.match(/[^\u0000-\u00ff]/) ? 'JAEN' : 'ENJA';

	var form = new Formlet(url, '_blank', 'post');
	form.param('before', origin);
	form.param('wb_lp', mode);
	form.submit();
})();

function Formlet(url, target, method) {
	...
}

function SelectedTexts() {
	...
}}