jquery mobileのレンダリングではまった

*この記事はjquery mobile のバージョンalpha 3に基づいて書いています。
2009年頃にGoogle App Engineを利用して個人的に使うために作ったライフログ「なにした?」

Archive for the ‘Google App Engine’ Category
http://blog.nal-6295.biz/?cat=128

をjquery mobile対応すべくやり始めていたのだが、後から挿し込むデータのレンダリングではまった。
基本、HTMLだけ書いとけばいいよ的なjQuery mobileはレンダリングはどうも$(document).ready()なタイミングで行う仕様らしく、しかも後から任意のタイミングでレンダリングしなおすためのメソッドも提供されていないらしく、ちょっと考え方を変える必要がありそうだ。
さいわい、djangoのテンプレートの部分とPythonのロジックの部分が分離されているので、urlマッピングとテンプレートの部分を新しく書きなおすだけで良さそう。
ま、そのうちやりましょう。

Share

クールなスマートフォン向けWebアプリケーションを作るなら「jQuery Mobile」かも?

jQueryは前からかなり便利に利用させていただいている。
jQueryを使うようになってからJavaScriptの見通しがよくなったし、本当に簡単なコードでいろいろできるようになった。
また、JQueryにはいろんなプラグインがあり、それぞれがかなり便利に活用できるようになっている。そんなJQueryプラグインからモバイルアプリケーション用のライブラリであるjQuery Mobileというスマートフォン向けのWebアプリケーションを構築するためのプラグインが登場したようだ。

jQuery Mobileとは、jQueryのプラグインとして利用するモバイルアプリケーション用のライブラリです。そしてその驚異的なまでの簡単さは、これから業務用のモバイルアプリケーションの作り方を一変させてしまう可能性を感じさせます。

引用元: 「jQuery Mobile」の登場で、モバイルアプリケーション開発は大きく変わる - Publickey.

上記のページをざっと読んだ感じだと、ルックアンドフィールもシンプルで統一感があり、触って気持よさそうなデザインとなっている。
jQueryの強力なライブラリにプラグインすることで、あらゆるスマートフォン向けのアプリケーション構築が加速するのでは無いだろうか。

ちょっと、これは導入しないわけにはいかないですね。

Share

getCurrentPositionをgeolocation APIだけではなくgoogle gearsでも使えるようにするサンプル

var geo = null;
if(google)
{
geo = google.gears.factory.create('beta.geolocation');
}
function getCurrentPosition(successfunction,errorfunction,option)
{
if(navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(successfunction,errorfunction,option);
}
else
{
if(geo)
{
geo.getCurrentPosition(successfunction, errorfunction);
}
}
}
Share

object.focus()でfocus移動した時のonblurやonchangeの挙動がJQueryを利用すると変わる

javascriptで直接、

onblur="alert('blur');"

と書いたときは、ちゃんとイベントが発生するが、

JQueryで、

$(target).blur(function (){alert('blur');});

と実装したときは、イベントが発生しない。

より正確にいうと、

IE7なら、同じ挙動だけど、firefoxだと上記の挙動。

んー。なんでだろうか・・・。

Share

enterキーで移動するスクリプト改

FireFoxやwebkitではkeyCodeの変更ができないので、強引にフォーカス移動するようにしています。

Enterキーで移動するスクリプト – NAL-6295の舌先三寸

最初に掲載したパターンでは全てのエレメントをいちいちeachでまわしながら対象を探していて、あまり良くなかったので、新しく書き直した。

$(document).ready(
function ()
{
$(":input").keydown(function (event)
{
var eventObject = event;
if(window.event)
{
eventObject = window.event;
}
if(eventObject.keyCode == 13)
{
inputlist = $(":input:enabled");
currentindex = inputlist.index($(this));
if(eventObject.shiftKey)
{
if(currentindex > 0)
{
currentindex -= 1;
}
}
else
{
if(currentindex < inputlist.length -1)
{
currentindex += 1;
}
}
$(":input:enabled:eq(" + currentindex + ")").focus();
return;
}
});
}
Share

iPhone OS3.0のMobile SafariからHTML5のGeolocation APIに対応する

iPhone OS3.0のMobile SafariからHTML5のGeolocation APIに対応する。

http://www.w3.org/TR/geolocation-API/

位置情報を任意に一回取得したい時は

navigator.geolocation.getCurrentPosition(成功時のコールバック,失敗時のコールバック,オプション)

で呼べば良く、緯度、経度はコールバックから渡ってくる引数から

引数.coords.latitude
引数.coords.longtitude

で、それぞれ取得できる(それ以外にもどっちを向いているのかとか、coordsからいろいろ取得できる。)ので、開発中のライフログに組み込むには、記録時にGPS情報を取得して、表示時にiPhone内のGoogle Mapに飛ばすようなリンクを貼れば良いかな。

あと1週間もしたらiPhone OS 3.0が来るので楽しみである。

Share