ボタンが押されたら画面をロックする
[]

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);

supertable 内の要素にイベントを指定する場合
[]

2010.06.22

このエントリーをはてなブックマークに追加
はてなブックマーク - supertable 内の要素にイベントを指定する場合

supertable内の要素のイベントを外部jsに記述している場合に、初期化の順番によっては、普通にclickなどを指定しても動作しないケースがある。=> liveメソッドでイベントを永続化する。

$("p").live("click", function(evt)){
    alert("p");
});

SuperTable

jQueryで動的にformを作って送信する
[]

2010.05.09

このエントリーをはてなブックマークに追加
はてなブックマーク - jQueryで動的にformを作って送信する

検証環境

  • IE8
  • Chrome

コード

// 要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() するだけで送信された。

デモ

javascriptでのクロージャのサンプル
[]

2010.04.13

このエントリーをはてなブックマークに追加
はてなブックマーク - javascriptでのクロージャのサンプル

クロージャは関数内でオブジェクトを使い回したいときに、 必要になったりする。


> 続きを読む

JavascriptのRegExpコンストラクタに渡す文字列は
エスケープルールに従うこと

[]

2010.04.01

このエントリーをはてなブックマークに追加
はてなブックマーク - JavascriptのRegExpコンストラクタに渡す文字列は<br />エスケープルールに従うこと

検証環境

window.openで開いた子ウィンドウに対してフォームの値を送信する
[]

2010.03.07

このエントリーをはてなブックマークに追加
はてなブックマーク - window.openで開いた子ウィンドウに対してフォームの値を送信する

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要素などで、渡したい値をフォームの中に作成する。

以上

IEのajaxリクエストのキャッシュではまる
[]

2009.11.06

このエントリーをはてなブックマークに追加
はてなブックマーク - IEのajaxリクエストのキャッシュではまる

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");

WIKI Viewer
[]

2008.11.05

このエントリーをはてなブックマークに追加
はてなブックマーク - WIKI Viewer

WIKIの整形フォーマットは、かなり便利で、ちょっとしたアウトラインエディタに使える。

JQueryでシンプルなHTMLビューワー
[]

2008.09.11

このエントリーをはてなブックマークに追加
はてなブックマーク - JQueryでシンプルなHTMLビューワー

単純なhtmlをプレビューするのにも使えるかも。


> 続きを読む

Observerパターンのサンプル
[]

2008.08.02

このエントリーをはてなブックマークに追加
はてなブックマーク - Observerパターンのサンプル

一つのモデルに対して複数のビューを適用したいときなどに
便利なのがオブザーバパターン。Javascriptで表現してみた。
> 続きを読む