Save Form State
by
cho45
2014-01-24 [2014/01/24 11:46:31]
実行すると開いているページのフォームの入力状態を復元するブックマークレットを生成します
/*
* @title Save Form State
* @description 実行すると開いているページのフォームの入力状態を復元するブックマークレットを生成します
* @include http://*
* @license MIT License
* @require jquery
* @require https://raw.github.com/kflorence/jquery-deserialize/master/dist/jquery.deserialize.min.js
*/
var data = [];
$('form').each(function () {
var $this = $(this);
data.push($this.serializeArray().filter(function (i) {
return $this.find('[name="' + i.name + '"]').attr('type') != 'hidden';
}));
});
function bookmarklet (data) {
(function load (scripts, callback) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.charset = 'utf-8';
script.onload = function () { scripts.length ? load(scripts, callback) : callback() };
script.src = scripts.shift();
document.body.appendChild(script);
})(["http://code.jquery.com/jquery-1.4.2.min.js","https://raw.github.com/kflorence/jquery-deserialize/master/dist/jquery.deserialize.min.js"], function() {
$('form').each(function () {
console.log('deserialize', this);
$(this).deserialize(data.shift());
});
});
}
var href = 'javascript:' + encodeURIComponent('(' + bookmarklet.toString() + ')(' + JSON.stringify(data) + ')');
$('<a/>').attr('href', href).text('Restore Form').prependTo(document.body);
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。