月別アーカイブ: 8月 2012

jQueryでページから離脱する際に確認メッセージを表示する

 Wordpressなんかそうだけど、投稿画面で入力中にページ移動しようとすると確認メッセージが出る。
 愛用しているThinkPadも、カーソルキーの上キーの左右がページ前後移動キーになっているので誤って押したり、マウスのスイッチで入力中にページ移動してしまって入力したフォームが消えてしまうアクシデントがあるので、この角にメッセージが出るのはなかなか便利。

 これを自分のページに実装するのは簡単で、

$(window).bind("beforeunload", function(e) {
    return "入力内容はまだ保存されていません、ページ移動しますか?";
});

のようにして、メッセージをreturnすると、その内容を表示したポップアップが出てくれる。 AlertとかConfirmとか書いてもChromeには無視された。

 このままだと常時出てしまうので、登録ボタンを押した場合にはメッセージを表示しないようにするために、

<input type=’submit’ onclick=’javascript:$("body").append("<input type=\"hidden\" name=\"no_unload_confirm\" value=\"1\">");’>

みたいにsubmitボタンのonclickで正常動作フラグを立てて

$(window).bind(‘beforeunload’, function(evnt){
    if(!$(‘input[name=no_unload_confirm]’).val()) return ‘入力内容はまだ保存されていません、ページ移動しますか?’;
});

みたいにフラグが立っているかチェックするようにすれば良い。

(603)

カテゴリー: jQuery | タグ: , | コメントをどうぞ

ユニークなID(UUID)を使う

 プログラムを書いていて、よく使うiとかnとかの変数名を使うと、たまに別の処理の変数と重複してカウントがおかしくなったりして永久ループ、みたいなことがある。
局所的な変数で、意味を持った名前にする必要がない場合などには、変数名をUUIDにしてしまうのが便利かもしれない。
 UUIDは、重複する確率が非常に低いランダム値で、182c9037-b8c9-4055-8fe0-b3f98d7e3e13みたいな感じの値で、2の122乗パターンがあり、世界中で適当に生成してもほぼユニークになる。
 MACアドレスとかは管理されて使っているけど、UUIDは管理しないでもユニークになることが期待されるので自由に生成して使って良い事になっている。 ので、勝手に生成してデバイスやライブラリの識別子等に使われている。

 Linuxのコンソールで、

uuidgen

とか打つと生成できる。

 command not foundな場合は、CentOSのyumならe2fsprogsパッケージに含まれているので、

yum install e2fsprogs

を実行。
 パッケージがe2fs(Ext2 FileSystem)な事からもわかるが、ドライブのフォーマット時にUUIDを生成してつけて、それを識別している。

 飛び飛びで関連性のあるコード追加時に行コメントにUUIDを貼り付けておいて、関連コードがわかるように管理するとかいう使い方もできる。

(422)

カテゴリー: LAMP[Linux, Apache, MySQL, PHP] | コメントをどうぞ

POSTしているページの「Webページの有効期限が切れています」を抑制する

 Webでブラウザバックした場合、「Webページの有効期限が切れています」等と出て、以前の入力内容が表示できないことがある。
 これは、ページリクエストがPOSTのページでキャッシュが無効になっている場合、再度POSTしないとページ内容が表示できないと言う事。
 最新の内容を表示させることを目的としていれば、この表示は妥当で、再度POSTしてもらうべきではあるが、入力ページなどで戻るボタンで移動したとき、前回の入力内容が表示できた方が便利だけど、この動作だとリロードになって入力内容がリセットされてしまうため、この動作を変更する。

 PHPでの実装は簡単で、
session_start()前

session_cache_limiter(‘private_no_expire’)

をセットすれば良い。

 これで、ページキャッシュが有効になって、ブラウザバックしたときには前回入力内容がそのまま表示される。

(666)

カテゴリー: PHP | コメントをどうぞ