2011.01.08
エンタープライズアプリだとよくあるご要望で、とにかくなんか処理を起動したら、終わるまで画面をいじれないようにしたい。
index.html
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>screenlock test</title>
<script type="text/javascript" src="./jquery.js"></script>
<script type="text/javascript">
$(function() {
$("#Btn").click(function(evt)
{
lockScreen();
//「?time=xxxx」はIEのキャッシュ対策
var url = './main.php?' + new Date().getTime();
$.getJSON(url, function(evt)
{
// サーバーからレスポンスがあった
unlockScreen();
alert(evt[0]);
});
});
function lockScreen()
{
$("body").append('<div id="LockScreen" style="position:absolute;left:0;top:0;width:100%;height:100%;color:black;background:white;opacity:0.8;filter:alpha(opacity=80);"><p align="center">現在重い処理をしてます。<br />しばらくお待ちくださいでやんす。<br /><img src="loading.gif" /></p></div>');
}
function unlockScreen()
{
$("#LockScreen").remove();
}
});
</script>
</head>
<body>
<input type="button" name="btn" id="Btn" value="処理開始" />
</body>
</html>
main.php
<?php
// なんか重い処理
sleep(10);
// レスポンスする
$ret = array(
'処理完了'
);
echo json_encode($ret);
Posted in blog | No Comments »
2010.06.22
supertable内の要素のイベントを外部jsに記述している場合に、初期化の順番によっては、普通にclickなどを指定しても動作しないケースがある。=> liveメソッドでイベントを永続化する。
$("p").live("click", function(evt)){
alert("p");
});
SuperTable
Posted in blog | No Comments »
2010.05.09
検証環境
コード
// 要jQuery
<script type="text/javascript">
$(function(){
var form = '<form name="download" id="FormDownload" method="post" action="/index.php/convert/download">';
form += '<input type="hidden" name="filename" value="'+filename+'" />';
form += '</form>';
$("body").append(form); // (1)
$("#FormDownload").submit(); // (2) WebKit系:$(form).submit();
});
</script>
(1)
- IEの場合はDOMに明示的に追加しないと送信されないようだ。
- Chromeなどは(1)の行は不要で、(2)で $(form).submit() するだけで送信された。
デモ
Posted in blog | No Comments »
2010.04.13
クロージャは関数内でオブジェクトを使い回したいときに、
必要になったりする。
> 続きを読む
Posted in blog | No Comments »
2010.04.01
Posted in blog | No Comments »
2010.03.07
jqueryを使ってます。
<script type="text/javascript">
/**
* Require jquery framework loaded.
*/
$(function() {
window.open('','child-window');
var form = '<form name="pdf" method="post" action="/print/index/pdf" target="child-window">';
form += '<input type="hidden" name="myhidden" value="myvalue1" />';
form += '</form>';
$(form).submit();
});
</script>
ポイント
- window.openの第2引数で『子ウィンドウ』に名前を付ける.
- formのtarget属性に『子ウィンドウ』の名前をセットすることで、フォームの送信先を『子ウィンドウ』にすることができる。
- あとはhidden要素などで、渡したい値をフォームの中に作成する。
以上
Posted in blog | No Comments »
2009.11.06
IEでは同一URLのGETメソッドのajaxリクエストを自動でキャッシュするので、
それを防ぐために、URLにタイムスタンプ的なパラメータを付加する。
IEに限らず、一般的なキャッシュ防止処理。
てっきり、jQuery-1.3.2がうまいことやっててくれてると思ってた。
//// IEのajaxリクエストのキャッシュを防ぐ対策
var timestamp = '?timestamp='+(new Date()).getTime();
$.getJSON('/ajax' + timestamp, displayFileCallback );
GETメソッドはコンテンツの冪等性を保証する場合に使うからIEの仕様は正しい。
ちなみにjQueryにはpostJSONというメソッドはない、POSTメソッドでJSONを取得したい場合は以下のようにすればよい。
var mydata = {p:'v'};
$.post('/path/to/action', mydata, function(ret){
// なんかコールバックが呼ばれたら行ないたい処理を記述.
}, "json");
Posted in blog | No Comments »
2008.11.05
WIKIの整形フォーマットは、かなり便利で、ちょっとしたアウトラインエディタに使える。
Posted in blog | No Comments »
2008.09.11
単純なhtmlをプレビューするのにも使えるかも。
> 続きを読む
Posted in blog | No Comments »
2008.08.02
一つのモデルに対して複数のビューを適用したいときなどに
便利なのがオブザーバパターン。Javascriptで表現してみた。
> 続きを読む
Posted in blog | No Comments »