ラベル HTML5 の投稿を表示しています。 すべての投稿を表示
ラベル HTML5 の投稿を表示しています。 すべての投稿を表示

2010年6月15日火曜日

Geolocation APIを使ってみた

HTML5では位置情報が取得出来るようなので、取得してみました!

緯度経度以外にも、標高も取得出来ます!


・プロパティーの一覧はこんな感じです

位置情報のプロパティcoordsのプロパティ説明
coordscoords緯度
longitude経度
altitude標高(利用できない場合はnull)
accuracy緯度・経度の正確さ(単位はメートル)
altitudeAccuracy標高の正確さ(単位はメートル)
headingデバイスの進行方向。真北に対する時計回りの角度。利用できない場合はnull
speedデバイスの進行速度。利用できない場合はnull
timestamp位置情報を取得した時間(1970/1/1からのミリ秒


-サンプル
GeolocationAPIを一通り使ってみました

緯度経度のみならず、標高も取得出来るのは驚いた。
標高がわかる携帯電話とかから使えば大丈夫なのかな?

2010年6月8日火曜日

HTML5 のWeb Storageを使ってみた

今回は、ローカルストレージと、セッションストレージを使ってみました!

■ローカルストレージ
下記のような 簡単なサンプルを作りました。
storeにて値の登録を行います。そうすると、store dateに登録されている一覧が表示されます。
さらに追加で登録を行うと、下記のようになります。


ローカルストレージのサンプル


・ソース
JavaのHashMapに値を格納するような感覚で使えます!
前回記述した通り、格納した値は消してあげないと消えません。
同一オリジン、同一ブラウザでなら、消されるまで値が保持されます。


■セッションストレージ
セッションストレージのサンプル
キャプチャ的には同じなので貼りません^_^;
基本的には、ローカルストレージのlocalstorageをsessionstorageに置換してあげれば使えます!
API的にも同じものが用意されています!

ただし!
前回説明した通り、別ウィンドウを開くと値はコピーされますが、
その瞬間だけ値が同じなだけでどちらかで更新してももう一方には反映されません!
上記のサンプルにて、試せるようにしてあるので実際に試してみてください。

こちらは、ウィンドウを閉じれば保持していた値は消えるので、特に気になるところはないな。
使い道は、、、別ウィンドウを開くときにパラメータとして渡したいってときぐらいしか使わないか?
渡せるけど、その画面から情報は受け取れないけどねw

■いちおうAPIを書いておきます
・メソッドについて

メソッド解説
lengthストレージ内に格納されているデータ数
key(index)指定されたインデックスのKeyを返す。存在しない場合はnullが返る
getItem(key)指定されたKeyに対応する値を返す
setItem(key, data)ストレージに指定したKey値で値を登録する
removeItem(key)ストレージから指定されたKey値に対応するデータを削除する
clear()すべてのデータをストレージから削除する

・storageイベントのプロパティについて

プロパティ解説
key変更されたKey。clear()メソッドが呼ばれた際にnull
oldValue変更前の値(のコピー)。新しいキーで値が登録された場合はnull。
newValue変更後の値(のコピー)。値が削除された場合にはnull。
urlイベント発生元のドキュメントURL。
storageArea変更されたストレージへの参照。
使い方
なぜか、イベントで処理をするとブラウザがクラッシュすることがありますので、気をつけてください。
使い方が悪いのか?それともブラウザがまだちゃんと対応されていないのか?

2010年6月7日月曜日

HTML5のWeb Storageを使ってみる前に軽くまとめてみた

■Web Storageとは
Web Storageとは、クライアントのディスクにデータを保存出来る仕組みです。
Web Storageは単純な”キー・バリュー”ストレージで、キーは文字列、バリューは任意のJavaScriptオブジェクトとなります。

■Web StorageとCookieの違い
Web Storageと似ている機能に、Cookieがあります。
違いをまとめておきます。

CookieWebStorage
サイズ制限1サイト4KBなし
HTTPリクエストHTTPリクエストに自動的に付加され送信される付加されない
有効期限指定できる指定できない
JavaScriptオブジェクト格納できない格納できる

■Web Storageの種類
Web Storageには、ローカルストレージセッションストレージが存在します。

-ローカルストレージ
Webサイト毎に使用できる、永続化領域の事で永続期間は無制限です。
同一ブラウザ、同一オリジン(プロトコル+ドメイン + ポート番号)にて、共有することができます。

-セッションストレージ
基本的にはローカルストレージと同じ。
ただし、有効範囲と生存期間がwindowオブジェクトと同じになっている。
ウィンドウを閉じられるとセッションストレージ内のデータは削除されます。(再読み込みなら削除されない)
ウィンドウから、別のウィンドウを開いた場合は、ストレージの内容がコピーされて渡されます。
コピーなので、別ウィンドウで書き換えても元のウィンドウには反映されません。逆も同じくコピーされません。

2010年6月1日火曜日

HTML5のWeb Workersを使ってみた

Web WorkersはJavaScriptをバックグラウンドで動かすことができる仕組みです!

バックグラウンドで動くことができるので、重たい処理をJavaScriptで処理させてもブラウザが固まらない!っていうメリットがあります。
使い方によっては、めちゃくちゃ便利だと思います。

ただし、WebWorkersからはDOMを操作ができないので注意!
やらないと思うが、alertも使えないので気をつけてください!

■サンプル1
バックグラウンドで、ひたすらカウントアップした結果を返し表示するだけ
サンプル

-index.html


-worker.js


■解説
①バックグラウンドで実行したいJavaScript(Worker)を指定する
②Workerからのメッセージが送信された際に実行されるイベントを登録する。
③Workerから受け取ったメッセージのデータを取得し、表示させる。
以上が簡単な使い方です!


■サンプル2
バックグラウンドで実行されるWorkerに引数を渡して、それに応じて値を返してもらう
一応、四則演算の結果を返すサンプルにしています。

-index.html


-worker.js
■解説 ①Workerに対して、データを送信する。 ②WorkerがpostMessageをした場合に呼ばれる。 Workerには無駄にカウントアップする処理が含まれている、 通常ならブラウザがロックされてしまい、スクロールができなくなる。 でも、今回はWorkerを使用しているのでDOM側がロックされる事がない。 試しにサンプル画面でスクロールをして見てください。

2010年5月24日月曜日

HTML5のpostMessageを使ってみた

HTML内にあるiframeに対してメッセージを送信することができます。
まずはmain.htmlとframe.htmlのサンプルを見てください!

実際の画面はサンプルを見てください。

■サンプル
-main.html

-frame.html


■解説
otherWindow.postMessage(message, targetOrigin);
-otherWindow
別ウィンドウへの参照。次のような参照が保持されます。例えば、iframe 要素のcontentWindow プロパティの利用、window.open によって返されるオブジェクト、あるいは、 window.frames における名前付きか数による添え字。
-message
送信したい文字列データ
-targetOrigin
イベントが伝達されるべき otherWindow の生成元を "*" というリテラル文字列(指定しないことを示します)か URI のいずれかで指定します。もしイベントが targetOrigin で指定されたものにマッチしない otherWindow の文書のスキーマ、ホスト名、あるいは、ポートに伝達するようになっている場合、そのイベントは伝達されません。つまり、3 つすべてがマッチした場合にだけイベントが伝達されます。この仕組みはメッセージが送られる場所の制御を提供します。例えば、postMessage をパスワードを送るために利用する場合、悪意のある第三者によるパスワードの傍受を防ぐためにこの引数が意図されたパスワードを含むメッセージの受け手と同じ生成元である URI であることは絶対的に致命的なものになるでしょう。

ここで、今回はjson形式の物をframeに対して渡しています!
せっかくjson形式で渡しているのですが、postMessageで扱えるのは文字列だけです。
よって、受け取り側でも文字列として受け取ってしまいます。
なので今回は、evalを使い文字列からjson形式に変換しています。

2010年5月9日日曜日

HTML5の Canvasで動くものを作ってみた

前回のHTML5の Canvasを使ってみたにて単純な三角形を作ってみました。

ただの三角形だとつまらないので、この三角形を動くようにしてみました!

三角形を動かす仕組みは、setIntervalを使って数秒おきに図形を描いています。

ただーし、図形を描くだけならすぐに出来るのですが、図形を消す方法がわからなかった。
ので、調べました!

context.clearRect(x,y,w,h)を使います!
消す方法はこれしか無いようです。
この関数の引数に消す範囲を渡します。そうすると、その範囲内の図形が消されます。

・ただ、三角形がウニョウニョ動くだけのソースです

・ブラウザが対応していれば、下記リンクから見れます
サンプル

HTML5のCanvasを使ってみた

■HTML5のCanvasとは
JavaScriptを使って、図形を書くことができるものです!
線、四角形、円などいろいろな図形をかけます。

■試しに使ってみた
・作る図形


・ソース
・ブラウザが対応していれば、下記リンクから見れます
サンプル

・解説
-beginPath()
サブパスのリストを空にして、コンテキストのサブパスが 0 個となるようにします。
今回でいうと、関係ないですが一応書いておいきます!

・moveTo(x,y)
指定された地点で新規のサブパスを生成します。
要するに、初期値店を指定することと同意です。

-lineTo(x,y)
コンテキストにサブパスがなければ、(x, y) に対するサブパスを定義します。コンテキストにサブパスがあれば、サブパスの終点から座標 (x, y) に向けて直線を引きます。そして、サブパスに、座標 (x, y) を追加します。
最初にmoveToにてサブパスが生成されていない場合は、線が引かれることはなく、サブパスの定義で終わります。

-closePath()
現在のサブパスを閉じていると記録し、その閉じたサブパスの開始と終了と同じ地点で、新たなサブパスを開始します。

-stroke()
現在のストローク・スタイルを使って、サブパスに線を引きます。