<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2470484580159671104</id><updated>2024-11-01T15:30:14.136+09:00</updated><title type='text'>HTML5をマスターする</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>65</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-8155749130999721145</id><published>2011-08-04T00:30:00.000+09:00</published><updated>2011-08-04T00:30:13.283+09:00</updated><title type='text'>SVGでアニメーションさせる</title><content type='html'>SVGでアニメーションをさせるには、SVGタグ内でアニメーションを指定します。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;svg height=&quot;200&quot; width=&quot;400&quot;&gt;
&lt;polygon fill=&quot;#FFFF00&quot; points=&quot;153,184 100.271,158.186 49.113,186.988 57.37,128.863
    14.168,89.109 72,79 96.458,25.628 123.943,77.506 182.261,84.274 141.416,126.445 &quot; stroke-miterlimit=&quot;10&quot; stroke=&quot;#000000&quot;&gt;
 &lt;animatetransform attributename=&quot;transform&quot; begin=&quot;0s&quot; dur=&quot;3s&quot; from=&quot;360 50 50&quot; repeatcount=&quot;indefinite&quot; to=&quot;0 50 50&quot; type=&quot;rotate&quot;&gt;
 &lt;/animatetransform&gt;
 &lt;animatemotion begin=&quot;0s&quot; dur=&quot;5s&quot; path=&quot;M 0 100 L 400 100&quot; repeatcount=&quot;indefinite&quot; rotate=&quot;auto&quot;&gt;&lt;/animatemotion&gt;
&lt;/polygon&gt;
&lt;/svg&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;svg height=&quot;200&quot; width=&quot;400&quot;&amp;gt;&lt;br /&gt;
&amp;lt;polygon fill=&quot;#FFFF00&quot; points=&quot;153,184 100.271,158.186 49.113,186.988 57.37,128.863&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 14.168,89.109 72,79 96.458,25.628 123.943,77.506 182.261,84.274 141.416,126.445 &quot; stroke-miterlimit=&quot;10&quot; stroke=&quot;#000000&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;animatetransform attributename=&quot;transform&quot; begin=&quot;0s&quot; dur=&quot;3s&quot; from=&quot;360 50 50&quot; repeatcount=&quot;indefinite&quot; to=&quot;0 50 50&quot; type=&quot;rotate&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;/animatetransform&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;animatemotion begin=&quot;0s&quot; dur=&quot;5s&quot; path=&quot;M 0 100 L 400 100&quot; repeatcount=&quot;indefinite&quot; rotate=&quot;auto&quot;&amp;gt;&amp;lt;/animatemotion&amp;gt;&lt;br /&gt;
&amp;lt;/polygon&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/8155749130999721145/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/08/svg.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/8155749130999721145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/8155749130999721145'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/08/svg.html' title='SVGでアニメーションさせる'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-4079576115534607362</id><published>2011-08-03T18:44:00.001+09:00</published><updated>2011-08-03T18:45:40.227+09:00</updated><title type='text'>データをローカルに保存する</title><content type='html'>データをローカルに保存するには、Web Storageを使います。&lt;br /&gt;
従来はクッキーを使って最大４ＫＢまでは保存できましたが、HTML5はWeb Storageを使って５ＭＢ程度の保存ができるようになりました。&lt;br /&gt;
AmazonやTwitter等のサイトは既にWeb Storageを使ったデータの保存が活用されているそうです。&lt;br /&gt;
&lt;br /&gt;
Web Storageには、sessionStorageとlocalStorageの２種類があります。&lt;br /&gt;
&lt;br /&gt;
sessionStorageはその名の通り、セッション毎に使用されるストレージです。&lt;br /&gt;
ウィンドウやタブ毎に保存場所が異なり、sessionStorageに保存されたデータは他のウィンドウやタブからは参照することができません。また、セッション終了時（ウィンドウやタブを閉じる）には同時にsessionStorageに保存されたデータも削除されます。&lt;br /&gt;
&lt;br /&gt;
localStorageはプロトコル・ドメイン・ポート番号が同じであれば全てのセッションでデータが共有され、セッションが終了してもデータは永続されます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Web Storageのメソッド・プロパティ一覧&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;メソッド・プロパティ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;length&lt;/td&gt;&lt;td&gt;保存データの個数&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;key(index)&lt;/td&gt;&lt;td&gt;指定インデックスに格納されているキー&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;getItem(key)&lt;/td&gt;&lt;td&gt;指定キーに格納されている値&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;setItem(key, value)&lt;/td&gt;&lt;td&gt;指定キーに指定値を格納&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;removeItem(key)&lt;/td&gt;&lt;td&gt;指定キーと値の組を削除&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;clear()&lt;/td&gt;&lt;td&gt;全データを削除&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
Web Storageにはイベントはstorageイベント１つしかありません。&lt;br /&gt;
以下に使用上のプロパティ値を載せますが、本項執筆時点ではまだ未実装の物が多いようです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
storageイベントで渡されるオブジェクト
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;プロパティ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;key&lt;/td&gt;&lt;td&gt;イベント発生対象のキー&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;oldValue&lt;/td&gt;&lt;td&gt;キーに対する旧いvalue&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;newValue&lt;/td&gt;&lt;td&gt;キーに対する新しいvalue&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;url&lt;/td&gt;&lt;td&gt;イベントが発生したURL&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;storageArea&lt;/td&gt;&lt;td&gt;変更データのストレージへの参照&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
以下はsessionStorageの例です。&lt;br /&gt;
KeyとValueに適当な値を入力して「保存」ボタンを押すとsessionStorageに保存されていく様子が分かります。また、一旦ウィンドウを閉じた後で再度開いても、データが残っていないことが分かると思います。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Key : &lt;input id=&quot;key&quot; name=&quot;key&quot; size=&quot;20&quot; type=&quot;text&quot; /&gt;
  Value:&lt;input id=&quot;value&quot; name=&quot;value&quot; size=&quot;20&quot; type=&quot;text&quot; /&gt;
&lt;input onclick=&quot;save()&quot; type=&quot;button&quot; value=&quot;保存&quot; /&gt;
&lt;input onclick=&quot;allClear()&quot; type=&quot;button&quot; value=&quot;全クリア&quot; /&gt;
&lt;br /&gt;
&lt;div id=&quot;list&quot;&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.onload = function() {
 list();
}
var storage = window.sessionStorage;
function save() {
 var keyValue = document.getElementById(&quot;key&quot;).value;
 var valValue = document.getElementById(&quot;value&quot;).value;

 if ( keyValue &amp;&amp; valValue ) {
  storage.setItem(keyValue, valValue);
 }
 keyValue = &quot;&quot;;
 valValue = &quot;&quot;;
 list();
}
function list() {
 var list = &quot;&quot;;
 for ( var i = 0 ; i &lt; storage.length ; i++ ) {
  var _key = storage.key(i);
  list += &quot;sessionStorage[&quot; + i + &quot;] = Key:&quot; + _key + &quot;  Value:&quot; + storage.getItem(_key) + &quot;      &lt;a href=\&quot;#\&quot; onClick=\&quot;remove(&quot; + i + &quot;); return false;\&quot;&gt;削除&lt;/a&gt;&lt;br /&gt;&quot;;
 }
 document.getElementById(&quot;list&quot;).innerHTML = list;
}
function remove(index) {
 var _key = storage.key(index);
 storage.removeItem(_key);
 list();
}
function allClear() {
 storage.clear();
 list();
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Key : &amp;lt;input type=&quot;text&quot; name=&quot;key&quot; id=&quot;key&quot; size=&quot;20&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; Value:&amp;lt;input type=&quot;text&quot; name=&quot;value&quot; id=&quot;value&quot; size=&quot;20&quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;button&quot; value=&quot;保存&quot; onClick=&quot;save()&quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;button&quot; value=&quot;全クリア&quot; onClick=&quot;allClear()&quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&quot;list&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
window.onload = function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; list();&lt;br /&gt;
}&lt;br /&gt;
var storage = window.sessionStorage;&lt;br /&gt;
function save() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var keyValue = document.getElementById(&quot;key&quot;).value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var valValue = document.getElementById(&quot;value&quot;).value;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( keyValue &amp;amp;&amp;amp; valValue ) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; storage.setItem(keyValue, valValue);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; keyValue = &quot;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; valValue = &quot;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; list();&lt;br /&gt;
}&lt;br /&gt;
function list() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var list = &quot;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for ( var i = 0 ; i &amp;lt; storage.length ; i++ ) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var _key = storage.key(i);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; list += &quot;sessionStorage[&quot; + i + &quot;] = Key:&quot; + _key + &quot;&amp;nbsp; Value:&quot; + storage.getItem(_key) + &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=\&quot;#\&quot; onClick=\&quot;remove(&quot; + i + &quot;); return false;\&quot;&amp;gt;削除&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; document.getElementById(&quot;list&quot;).innerHTML = list;&lt;br /&gt;
}&lt;br /&gt;
function remove(index) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var _key = storage.key(index);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; storage.removeItem(_key);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; list();&lt;br /&gt;
}&lt;br /&gt;
function allClear() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; storage.clear();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; list();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
以下はlocalStorageを使った例です。&lt;br /&gt;
sessionStorageをlocalStorageに変更しただけで同じです。&lt;br /&gt;
sessionStorageとlocalStorageは同じメソッド、プロパティが使えます。&lt;br /&gt;
また、localStorageはセッションが終了しても残るため、前のセッションで保存したものをページのロード時に表示させるためにonloadイベントを追加しています。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Key : &lt;input id=&quot;key&quot; name=&quot;key&quot; size=&quot;20&quot; type=&quot;text&quot; /&gt;
  Value:&lt;input id=&quot;value&quot; name=&quot;value&quot; size=&quot;20&quot; type=&quot;text&quot; /&gt;
&lt;input onclick=&quot;save()&quot; type=&quot;button&quot; value=&quot;保存&quot; /&gt;
&lt;input onclick=&quot;allClear()&quot; type=&quot;button&quot; value=&quot;全クリア&quot; /&gt;
&lt;br /&gt;
&lt;div id=&quot;list&quot;&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
window.onload = function() {
 list();
}
var storage = window.localStorage;
function save() {
 var keyValue = document.getElementById(&quot;key&quot;).value;
 var valValue = document.getElementById(&quot;value&quot;).value;

 if ( keyValue &amp;&amp; valValue ) {
  storage.setItem(keyValue, valValue);
 }
 keyValue = &quot;&quot;;
 valValue = &quot;&quot;;
 list();
}
function list() {
 var list = &quot;&quot;;
 for ( var i = 0 ; i &lt; storage.length ; i++ ) {
  var _key = storage.key(i);
  list += &quot;sessionStorage[&quot; + i + &quot;] = Key:&quot; + _key + &quot;  Value:&quot; + storage.getItem(_key) + &quot;      &lt;a href=\&quot;#\&quot; onClick=\&quot;remove(&quot; + i + &quot;); return false;\&quot;&gt;削除&lt;/a&gt;&lt;br /&gt;&quot;;
 }
 document.getElementById(&quot;list&quot;).innerHTML = list;
}
function remove(index) {
 var _key = storage.key(index);
 storage.removeItem(_key);
 list();
}
function allClear() {
 storage.clear();
 list();
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Key : &amp;lt;input type=&quot;text&quot; name=&quot;key&quot; id=&quot;key&quot; size=&quot;20&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; Value:&amp;lt;input type=&quot;text&quot; name=&quot;value&quot; id=&quot;value&quot; size=&quot;20&quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;button&quot; value=&quot;保存&quot; onClick=&quot;save()&quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;button&quot; value=&quot;全クリア&quot; onClick=&quot;allClear()&quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&quot;list&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
window.onload = function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; list();&lt;br /&gt;
}&lt;br /&gt;
var storage = window.localStorage;&lt;br /&gt;
function save() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var keyValue = document.getElementById(&quot;key&quot;).value;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var valValue = document.getElementById(&quot;value&quot;).value;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( keyValue &amp;amp;&amp;amp; valValue ) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; storage.setItem(keyValue, valValue);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; keyValue = &quot;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; valValue = &quot;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; list();&lt;br /&gt;
}&lt;br /&gt;
function list() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var list = &quot;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for ( var i = 0 ; i &amp;lt; storage.length ; i++ ) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var _key = storage.key(i);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; list += &quot;sessionStorage[&quot; + i + &quot;] = Key:&quot; + _key + &quot;&amp;nbsp; Value:&quot; + storage.getItem(_key) + &quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=\&quot;#\&quot; onClick=\&quot;remove(&quot; + i + &quot;); return false;\&quot;&amp;gt;削除&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; document.getElementById(&quot;list&quot;).innerHTML = list;&lt;br /&gt;
}&lt;br /&gt;
function remove(index) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var _key = storage.key(index);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; storage.removeItem(_key);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; list();&lt;br /&gt;
}&lt;br /&gt;
function allClear() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; storage.clear();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; list();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/4079576115534607362/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post_03.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/4079576115534607362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/4079576115534607362'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post_03.html' title='データをローカルに保存する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-8750858821596012631</id><published>2011-08-02T23:56:00.006+09:00</published><updated>2011-08-03T00:09:24.410+09:00</updated><title type='text'>オフラインでも見られるようにする</title><content type='html'>Webサーバーにアクセスした時に必要なファイルをローカルに保存しておけば、ネットに接続していない時でも接続しているのと同じようにサービスを受けることができるようになります。&lt;br /&gt;
このHTML5の仕組みを「アプリケーションキャッシュ」と言います。&lt;br /&gt;
&lt;br /&gt;
キャッシュするファイルを指定するためにhtml要素に「manifest=”ファイル名.manifest”」属性を付けます。&lt;br /&gt;
そして、Webサーバー側の設定ファイルである、.htaccessファイルに以下の１行を追加します。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
AddType text/cache-manifest&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; manifest&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
これで、manifest拡張子のファイルはMIME/TYPE「text/cache-manifest」でクライアントに送信されるようになります。マニフェストファイルは「text/cache-manifest」で送信しないとクライアント側で認識されません。&lt;br /&gt;
&lt;br /&gt;
manifestファイルの中身は以下の様にします。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;
CACHE MANIFEST&lt;br /&gt;
#&amp;nbsp; #はコメントです。&lt;br /&gt;
# 下のCACHEから、キャッシュするファイル名を指定します。&lt;br /&gt;
# 何もラベルが無い場合は、このCACHEを指定したのと同じになります。&lt;br /&gt;
CACHE&lt;br /&gt;
&lt;div style=&quot;background-color: yellow;&quot;&gt;
index.html&lt;/div&gt;
&lt;br /&gt;
# 下のNETWORKからはキャッシュしないファイル名を指定します。&lt;br /&gt;
NETWORK&lt;br /&gt;
・・・・.cgi&lt;br /&gt;
http://maps.google.com/&lt;br /&gt;
&lt;br /&gt;
# ここに*（アスタリスク）を置くと、全てのファイルという&lt;br /&gt;
# 意味になります。この場合、全てのファイルをキャッシュ&lt;br /&gt;
# しない設定になります。&lt;br /&gt;
&lt;br /&gt;
# 下のFALLBACKから、キャッシュしていないリソースにアクセスした&lt;br /&gt;
# 時に表示する代替リソースを指定します。&lt;br /&gt;
FALLBACK&lt;br /&gt;
# abc.htmlがキャッシュされていない場合、error.htmlを表示します。&lt;br /&gt;
abc.html&amp;nbsp; error.html&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
上のようにマニフェストを設定すると、例えば「&lt;span style=&quot;background-color: yellow;&quot;&gt;index.html&lt;/span&gt;」ファイルはクライアントのローカルにキャッシュされるようになります。&lt;br /&gt;
&lt;br /&gt;
例えばここで、サーバー側でindex.htmlファイルが更新された場合、index.htmlファイルはキャッシュ指定されているのでクライアント側には旧いindex.htmlファイルが表示され続けることになります。&lt;br /&gt;
&lt;br /&gt;
このような場合は、サーバー側でindex.htmlファイルの更新と同時にマニフェストファイルの更新も行えば、キャッシュ内のファイルも更新されるようになります。&lt;br /&gt;
マニフェストファイルの日付が更新されていると、キャッシュされたファイルも新しい物に更新されます。&lt;br /&gt;
&lt;br /&gt;
また、javascriptから明示的にキャッシュを更新したい場合、「window.applicationCache.update()」を呼べば、マニフェストファイルを再ダウンロードしてキャッシュも更新してくれるようになります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ＦｉｒｅｆｏｘでＵＲＬ入力欄に「about:cache」と指定すれば、キャッシュ情報が表示されます。&lt;br /&gt;
ＣｈｒｏｍｅでＵＲＬ入力欄に「chrome://appcache-internals/」と指定すれば、キャッシュ情報が表示されます。&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/8750858821596012631/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post_2354.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/8750858821596012631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/8750858821596012631'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post_2354.html' title='オフラインでも見られるようにする'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-1439588670847945624</id><published>2011-08-02T19:05:00.003+09:00</published><updated>2011-08-02T23:51:34.272+09:00</updated><title type='text'>経度・緯度から住所を取得する</title><content type='html'>Google Map APIを利用して、経度、緯度情報から住所を取得するには、Geocoderオブジェクトを使用します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;div id=&quot;map&quot; style=&quot;border: 1px solid #0000FF; height: 300px; width: 400px;&quot;&gt;
&lt;/div&gt;
&lt;script src=&quot;http://maps.google.com/maps/api/js?sensor=true&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var map, infoWindow;
if (!navigator.geolocation) {
 var map = document.getElementById(&quot;map&quot;);
 map.innerHTML = &quot;このブラウザは位置情報をサポートしていません。&quot;;
} else {
 navigator.geolocation.getCurrentPosition(showMap2, showError2,
    {
     enableHighAccuracy:true,
     maximumAge:0,
     timeout:10000
    });
}
function showMap2(position) {
 var latitude = position.coords.latitude;
 var longitude = position.coords.longitude;

 // 取得して現在位置をGoogle Maps APIに渡す
 var mapCenter = new google.maps.LatLng(latitude, longitude);
 var mapDiv = document.getElementById(&quot;map&quot;);
 var op = {
  zoom:16,   // 表示倍率を指定
  center:mapCenter, // 中央位置を指定
  mapTypeId:google.maps.MapTypeId.ROADMAP,
  scaleControl:true // 倍率変更を指定
 };
 // 地図を表示
 map = new google.maps.Map(mapDiv, op);

 // マーカーを表示
 var marker = new google.maps.Marker({
  position:mapCenter,
  map:map,
  title:&quot;現在地&quot;});
 map.setCenter(mapCenter);

 var geocoder = new google.maps.Geocoder();
 geocoder.geocode({&#39;latLng&#39;: mapCenter}, getGoogleMapAddress);
 infoWindow = new google.maps.InfoWindow();
}
function showError2(error) {
 var l = document.getElementById(&quot;map&quot;);
 switch(error.code) {
  case error.UNKNOWN_ERROR:
   l.innerHTML = &quot;UNKNOWN_ERROR:&quot; + error.message;
   break;
  case error.PERMISSION_DENIED:
   l.innerHTML = &quot;PERMISSION_DENIED:&quot;;
   break;
  case error.POSITION_UNAVAILABLE:
   l.innerHTML = &quot;POSITION_UNAVAILABLE:&quot;;
   break;
  case error.TIMEOUT:
   l.innerHTML = &quot;TIMEOUT:&quot;;
   break;
 }
}
function getGoogleMapAddress(results, status){
    var address;
    if (status == google.maps.GeocoderStatus.OK) {
        address = results[0].formatted_address;
        infoWindow.setPosition(results[0].geometry.location);
        infoWindow.setContent(address);
        infoWindow.open(map);
    } else {
 m = document.getElementById(&quot;map&quot;);
 m.innerHTML = &quot;エラーが発生しました。&quot; + status;
    }
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, user-scalable=yes, initial-scale=1.0, maximum-scale=3.0&quot; /&amp;gt;&lt;br /&gt;&amp;lt;div id=&quot;map&quot; style=&quot;border:1px solid #0000FF; width:400px; height:300px;&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.google.com/maps/api/js?sensor=true&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;var map, infoWindow;&lt;br /&gt;if (!navigator.geolocation) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var map = document.getElementById(&quot;map&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;map.innerHTML = &quot;このブラウザは位置情報をサポートしていません。&quot;;&lt;br /&gt;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;navigator.geolocation.getCurrentPosition(showMap2, showError2,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;enableHighAccuracy:true,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;maximumAge:0,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timeout:10000&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;});&lt;br /&gt;}&lt;br /&gt;function showMap2(position) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var latitude = position.coords.latitude;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var longitude = position.coords.longitude;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 取得して現在位置をGoogle Maps APIに渡す&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var mapCenter = new google.maps.LatLng(latitude, longitude);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var mapDiv = document.getElementById(&quot;map&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var op = {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;zoom:16,&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 表示倍率を指定&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;center:mapCenter,&amp;nbsp;&amp;nbsp; &amp;nbsp;// 中央位置を指定&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;mapTypeId:google.maps.MapTypeId.ROADMAP,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;scaleControl:true&amp;nbsp;&amp;nbsp; &amp;nbsp;// 倍率変更を指定&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;};&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 地図を表示&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;map = new google.maps.Map(mapDiv, op);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;// マーカーを表示&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var marker = new google.maps.Marker({&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;position:mapCenter,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;map:map,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;title:&quot;現在地&quot;});&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;map.setCenter(mapCenter);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var geocoder = new google.maps.Geocoder();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;geocoder.geocode({&#39;latLng&#39;: mapCenter}, getGoogleMapAddress);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;infoWindow = new google.maps.InfoWindow();&lt;br /&gt;}&lt;br /&gt;function showError2(error) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var l = document.getElementById(&quot;map&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch(error.code) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case error.UNKNOWN_ERROR:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;l.innerHTML = &quot;UNKNOWN_ERROR:&quot; + error.message;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case error.PERMISSION_DENIED:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;l.innerHTML = &quot;PERMISSION_DENIED:&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case error.POSITION_UNAVAILABLE:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;l.innerHTML = &quot;POSITION_UNAVAILABLE:&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case error.TIMEOUT:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;l.innerHTML = &quot;TIMEOUT:&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;function getGoogleMapAddress(results, status){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var address;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (status == google.maps.GeocoderStatus.OK) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; address = results[0].formatted_address;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; infoWindow.setPosition(results[0].geometry.location);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; infoWindow.setContent(address);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; infoWindow.open(map);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;m = document.getElementById(&quot;map&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;m.innerHTML = &quot;エラーが発生しました。&quot; + status;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;hr /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/1439588670847945624/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post_9154.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/1439588670847945624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/1439588670847945624'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post_9154.html' title='経度・緯度から住所を取得する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-1782924455540018913</id><published>2011-08-02T19:03:00.001+09:00</published><updated>2011-08-03T00:06:39.130+09:00</updated><title type='text'>Google Mapに現在位置を表示する</title><content type='html'>Google Mapに位置情報を表示するには、「&lt;a href=&quot;http://master-html5.blogspot.com/2011/08/blog-post_02.html&quot;&gt;現在位置を取得する&lt;/a&gt;」と同様に現在位置を取得し、その後Google Map APIに位置を指定して表示させます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;div id=&quot;map&quot; style=&quot;border: 1px solid #0000FF; height: 300px; width: 400px;&quot;&gt;
&lt;/div&gt;
&lt;script src=&quot;http://maps.google.com/maps/api/js?sensor=true&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if (!navigator.geolocation) {
 var map = document.getElementById(&quot;map&quot;);
 map.innerHTML = &quot;このブラウザは位置情報をサポートしていません。&quot;;
} else {
 navigator.geolocation.getCurrentPosition(showMap, showError,
    {
     enableHighAccuracy:true,
     maximumAge:0,
     timeout:10000
    });
}
function showMap(position) {
 var lat = position.coords.latitude;
 var long = position.coords.longitude;

 // 取得して現在位置をGoogle Maps APIに渡す
 var mapCenter = new google.maps.LatLng(lat, long);
 var mapDiv = document.getElementById(&quot;map&quot;);
 var options = {
  zoom:16,   // 表示倍率を指定
  center:mapCenter, // 中央位置を指定
  mapTypeId:google.maps.MapTypeId.ROADMAP,
  scaleControl:true // 倍率変更を指定
 };
 // 地図を表示
 var map = new google.maps.Map(mapDiv, options);

 // マーカーを表示
 var marker = new google.maps.Marker({
  position:mapCenter,
  map:map,
  title:&quot;現在地&quot;});
 map.setCenter(mapCenter);
}
function showError(error) {
 var l = document.getElementById(&quot;map&quot;);
 switch(error.code) {
  case error.UNKNOWN_ERROR:
   l.innerHTML = &quot;UNKNOWN_ERROR:&quot; + error.message;
   break;
  case error.PERMISSION_DENIED:
   l.innerHTML = &quot;PERMISSION_DENIED:&quot;;
   break;
  case error.POSITION_UNAVAILABLE:
   l.innerHTML = &quot;POSITION_UNAVAILABLE:&quot;;
   break;
  case error.TIMEOUT:
   l.innerHTML = &quot;TIMEOUT:&quot;;
   break;
 }
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;div id=&quot;map&quot; style=&quot;border: 1px solid #0000FF; width:400px; height:300px;&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot; src=&quot;http://maps.google.com/maps/api/js?sensor=true&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
if (!navigator.geolocation) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var map = document.getElementById(&quot;map&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.innerHTML = &quot;このブラウザは位置情報をサポートしていません。&quot;;&lt;br /&gt;
} else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; navigator.geolocation.getCurrentPosition(showMap, showError,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; enableHighAccuracy:true,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; maximumAge:0,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; timeout:10000&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; });&lt;br /&gt;
}&lt;br /&gt;
function showMap(position) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var lat = position.coords.latitude;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var long = position.coords.longitude;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 取得して現在位置をGoogle Maps APIに渡す&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var mapCenter = new google.maps.LatLng(lat, long);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var mapDiv = document.getElementById(&quot;map&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var options = {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; zoom:16,&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 表示倍率を指定&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; center:mapCenter,&amp;nbsp;&amp;nbsp;&amp;nbsp; // 中央位置を指定&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; mapTypeId:google.maps.MapTypeId.ROADMAP,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; scaleControl:true&amp;nbsp;&amp;nbsp;&amp;nbsp; // 倍率変更を指定&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // 地図を表示&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var map = new google.maps.Map(mapDiv, options);&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; // マーカーを表示&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var marker = new google.maps.Marker({&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; position:mapCenter,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; map:map,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; title:&quot;現在地&quot;});&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; map.setCenter(mapCenter);&lt;br /&gt;
}&lt;br /&gt;
function showError(error) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var l = document.getElementById(&quot;map&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(error.code) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case error.UNKNOWN_ERROR:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l.innerHTML = &quot;UNKNOWN_ERROR:&quot; + error.message;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case error.PERMISSION_DENIED:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l.innerHTML = &quot;PERMISSION_DENIED:&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case error.POSITION_UNAVAILABLE:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l.innerHTML = &quot;POSITION_UNAVAILABLE:&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case error.TIMEOUT:&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; l.innerHTML = &quot;TIMEOUT:&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/1782924455540018913/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/08/google-map.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/1782924455540018913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/1782924455540018913'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/08/google-map.html' title='Google Mapに現在位置を表示する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-8333342991108871762</id><published>2011-08-02T11:45:00.002+09:00</published><updated>2011-08-02T11:54:10.106+09:00</updated><title type='text'>定期的に位置情報を取得する</title><content type='html'>定期的に位置情報を取得するには、Geolocation APIのwatchPositionメソッドを使用します。&lt;br /&gt;
&lt;br /&gt;
watchPosition(&lt;br /&gt;
位置情報取得成功Callback関数,&lt;br /&gt;
位置情報取得失敗Callback関数（省略可）,&lt;br /&gt;
位置情報取得オプション（省略可）&lt;br /&gt;
);&lt;br /&gt;
&lt;br /&gt;
watchPositionメソッドは、getCurrentPositionと基本的に同じですが、getCurrentPositionが１回だけ位置情報を通知するのに対し、watchPositionは位置が変更される度に通知されるというのが違います。また、戻り値に位置情報の継続取得を中止するためのIDが返却されるのも異なる点です。&lt;br /&gt;
各オブジェクト、プロパティ等の意味は「&lt;a href=&quot;http://master-html5.blogspot.com/2011/08/blog-post_02.html&quot;&gt;現在位置を取得する&lt;/a&gt;」を参照して下さい。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;div id=&quot;location2&quot;&gt;
&lt;/div&gt;
&lt;input onclick=&quot;stopWatchPosition();&quot; type=&quot;button&quot; value=&quot;ボタンを押すと位置情報の継続取得を中止します&quot; /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
var stopID;
if (!navigator.geolocation) {
 var l = document.getElementById(&quot;location2&quot;);
 l.innerHTML = &quot;このブラウザは位置情報をサポートしていません。&quot;;
} else {
 stopID = navigator.geolocation.watchPosition(locationGetSuccess2
  , locationGetError2,
  {
   enableHighAccuracy:true,
   maximumAge:0,
   timeout:1000
  });
}
function locationGetSuccess2(position) {
 var l = document.getElementById(&quot;location2&quot;);
 var now = new Date();
 l.innerHTML = &quot;緯度：&quot; + position.coords.latitude + &quot;&lt;br /&gt;&quot;
   + &quot;経度：&quot; + position.coords.longitude + &quot;&lt;br /&gt;&quot;
   + &quot;Time：&quot; + now.getHours() + &quot;:&quot; + now.getMinutes() + &quot;:&quot;
   +  now.getSeconds() + &quot;&lt;br /&gt;&quot;;
}
function locationGetError2(error) {
 var l = document.getElementById(&quot;location2&quot;);
 switch(error.code) {
  case error.UNKNOWN_ERROR:
   l.innerHTML = &quot;UNKNOWN_ERROR:&quot; + error.message;
   break;
  case error.PERMISSION_DENIED:
   l.innerHTML = &quot;PERMISSION_DENIED:&quot;;
   break;
  case error.POSITION_UNAVAILABLE:
   l.innerHTML = &quot;POSITION_UNAVAILABLE:&quot;;
   break;
  case error.TIMEOUT:
   l.innerHTML = &quot;TIMEOUT:&quot;;
   break;
 }
}
function stopWatchPosition() {
 navigator.geolocation.clearWatch(stopID);
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;div id=&quot;location2&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;input type=&quot;button&quot; onclick=&quot;stopWatchPosition();&quot; value=&quot;ボタンを押すと位置情報の継続取得を中止します&quot;&amp;gt;&amp;lt;/input&amp;gt;&lt;br /&gt;&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;var stopID;&lt;br /&gt;if (!navigator.geolocation) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var l = document.getElementById(&quot;location2&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;l.innerHTML = &quot;このブラウザは位置情報をサポートしていません。&quot;;&lt;br /&gt;} else {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;stopID = navigator.geolocation.watchPosition(locationGetSuccess2&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;, locationGetError2,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;enableHighAccuracy:true,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;maximumAge:0,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;timeout:1000&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;});&lt;br /&gt;}&lt;br /&gt;function locationGetSuccess2(position) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var l = document.getElementById(&quot;location2&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var now = new Date();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;l.innerHTML = &quot;緯度：&quot; + position.coords.latitude + &quot;&amp;lt;br /&amp;gt;&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;+ &quot;経度：&quot; + position.coords.longitude + &quot;&amp;lt;br /&amp;gt;&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;+ &quot;Time：&quot; + now.getHours() + &quot;:&quot; + now.getMinutes() + &quot;:&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;+&amp;nbsp; now.getSeconds() + &quot;&amp;lt;br /&amp;gt;&quot;;&lt;br /&gt;}&lt;br /&gt;function locationGetError2(error) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;var l = document.getElementById(&quot;location2&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;switch(error.code) {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case error.UNKNOWN_ERROR:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;l.innerHTML = &quot;UNKNOWN_ERROR:&quot; + error.message;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case error.PERMISSION_DENIED:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;l.innerHTML = &quot;PERMISSION_DENIED:&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case error.POSITION_UNAVAILABLE:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;l.innerHTML = &quot;POSITION_UNAVAILABLE:&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;case error.TIMEOUT:&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;l.innerHTML = &quot;TIMEOUT:&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;function stopWatchPosition() {&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;navigator.geolocation.clearWatch(stopID);&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;hr /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/8333342991108871762/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post_9671.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/8333342991108871762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/8333342991108871762'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post_9671.html' title='定期的に位置情報を取得する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-8532273708811555429</id><published>2011-08-02T11:35:00.000+09:00</published><updated>2011-08-02T11:35:33.879+09:00</updated><title type='text'>現在位置を取得する</title><content type='html'>現在位置を取得するには、Geolocation APIのgetCurrentPositionメソッドを使います。&lt;br /&gt;
お使いのＰＣやスマートフォンがＧＰＳやＷＩＦＩ等を利用した位置情報の取得に対応していれば、ブラウザで位置情報を使用することが可能になります。&lt;br /&gt;
&lt;br /&gt;
navigator.geolocation.getCurrentPosition(位置情報取得成功Callback関数&lt;br /&gt;
, 位置情報取得失敗Callback関数（省略可）&lt;br /&gt;
, 位置情報取得オプション（省略可）&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
位置情報取得オプションには、以下のPositionOptionsオブジェクトを指定できます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
位置情報取得オプション指定PositionOptionsオブジェクト
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;プロパティ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;enableHighAccuracy&lt;/td&gt;&lt;td&gt;高い精度で位置情報を取得(true/false)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;timeout&lt;/td&gt;&lt;td&gt;タイムアウト時間(ミリ秒)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;maximumAge&lt;/td&gt;&lt;td&gt;有効期間(ミリ秒)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
位置情報取得成功Callback関数には、Positionオブジェクトが引数として渡され、Javascriptからそれらの情報にアクセスすることができます。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
位置情報取得成功Callbackに渡されるPositionオブジェクト
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;プロパティ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;latitude&lt;/td&gt;&lt;td&gt;緯度&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;longitude&lt;/td&gt;&lt;td&gt;経度&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;altitude&lt;/td&gt;&lt;td&gt;高度&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;accuracy&lt;/td&gt;&lt;td&gt;緯度、経度の誤差&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;altitudeAccuracy&lt;/td&gt;&lt;td&gt;高度の誤差&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;heading&lt;/td&gt;&lt;td&gt;方角&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;speed&lt;/td&gt;&lt;td&gt;速度（ｍ／秒）&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;timestamp&lt;/td&gt;&lt;td&gt;タイムスタンプ型の時刻情報&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
位置情報取得失敗Callback関数には、PositionErrorオブジェクトが引数として渡されます。&lt;br /&gt;
&lt;br /&gt;
PositionErrorオブジェクト
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;プロパティ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;code&lt;/td&gt;&lt;td&gt;エラーコード&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;message&lt;/td&gt;&lt;td&gt;エラーメッセージ&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
エラーコード
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;エラーコード&lt;/td&gt;&lt;td&gt;意味&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;UNKNOWN_ERROR(0)&lt;/td&gt;&lt;td&gt;不明なエラー&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;PERMISSION_DENIED(1)&lt;/td&gt;&lt;td&gt;位置情報の利用が許可されていない&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;POSITION_UNAVAILABLE(2)&lt;/td&gt;&lt;td&gt;位置情報が取得できない&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;TIMEOUT(3)&lt;/td&gt;&lt;td&gt;位置情報取得タイムアウト&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
以下は、現在の位置情報を取得して表示する例です。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;div id=&quot;location&quot;&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
if (!navigator.geolocation){
    window.alert(&quot;このブラウザはGeolocation APIを利用できません&quot;);
}else{
    navigator.geolocation.getCurrentPosition(
                    getLocationSuccessCallback, 
                    getLocationErrorCallback,
   {
    enableHighAccuracy:true,
    maximumAge:0,
    timeout:10000
   }
                    );
}

function getLocationSuccessCallback(position){
 var l = document.getElementById(&quot;location&quot;)
 l.innerHTML = &quot;緯度：&quot; + position.coords.latitude + &quot;&lt;br /&gt;&quot;
 +  &quot;経度：&quot; + position.coords.longitude + &quot;&lt;br /&gt;&quot;;
}
function getLocationErrorCallback(error){
    var message = &quot;&quot;;
    switch(error.code)
    {
        case error.TIMEOUT:
            message = &quot;タイムアウトが発生しました&quot;;
            break;
        case error.POSITION_UNAVAILABLE:
            message = &quot;位置情報が利用できませんでした&quot;;
            break;
        case error.PERMISSION_DENIED:
            message = &quot;Geolocation APIの利用権限がありません&quot;;
            break;
        case error.UNKNOWN_ERROR:
            message = &quot;UNKNOWN_ERROR:&quot; + error.message;
            break;
    }
    document.getElementById(&quot;location&quot;).innerHTML = message;
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;div id=&quot;location&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;if (!navigator.geolocation){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; window.alert(&quot;このブラウザはGeolocation APIを利用できません&quot;);&lt;br /&gt;}else{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; navigator.geolocation.getCurrentPosition(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getLocationSuccessCallback, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getLocationErrorCallback,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; enableHighAccuracy:true,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; maximumAge:0,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; timeout:10000&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function getLocationSuccessCallback(position){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var l = document.getElementById(&quot;location&quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; l.innerHTML = &quot;緯度：&quot; + position.coords.latitude + &quot;&amp;lt;br /&amp;gt;&quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; +&amp;nbsp; &quot;経度：&quot; + position.coords.longitude + &quot;&amp;lt;br /&amp;gt;&quot;;&lt;br /&gt;}&lt;br /&gt;function getLocationErrorCallback(error){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var message = &quot;&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch(error.code)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case error.TIMEOUT:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = &quot;タイムアウトが発生しました&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case error.POSITION_UNAVAILABLE:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = &quot;位置情報が利用できませんでした&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case error.PERMISSION_DENIED:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = &quot;Geolocation APIの利用権限がありません&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case error.UNKNOWN_ERROR:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = &quot;UNKNOWN_ERROR:&quot; + error.message;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.getElementById(&quot;location&quot;).innerHTML = message;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/8532273708811555429/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post_02.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/8532273708811555429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/8532273708811555429'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post_02.html' title='現在位置を取得する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-7593638690514340804</id><published>2011-08-02T10:11:00.000+09:00</published><updated>2011-08-02T10:11:16.757+09:00</updated><title type='text'>他ブラウザからドロップする</title><content type='html'>ブラウザ外の別アプリケーションからドラッグ＆ドロップを受け入れるには、ドロップイベントを補足してdataTransferでドロップされた情報を読み取ります。&lt;br /&gt;
他アプリケーション（ブラウザ）からドロップすることができるMIME/TYPEは、「text/plain」「text/html」「text/xml」「text/uri-list」です。&lt;br /&gt;
&lt;br /&gt;
下の例は、他ブラウザで適当なサイトを表示して適当な文字を選択し、そのまま四角の中にドロップすると、ドロップされた情報を表示する例です。&lt;br /&gt;
テキストにはHTMLタグがある可能性があるので、タグが処理されないように一旦HTMLのDiv要素に入れることでタグが処理されないようにエスケープ処理をかけています。&lt;br /&gt;
ＦｉｒｅＦｏｘで実行すると自動的にリンク読み込み処理が走ってエラーが表示されるようです。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;div id=&quot;dropSample&quot; ondragover=&quot;onDragOver2(event)&quot; ondrop=&quot;onDrop2(event)&quot; style=&quot;border-radius: 4px; border: 1px solid #0000FF; height: 200px; width: 300px;&quot;&gt;
ここにドロップして下さい。
&lt;/div&gt;
&lt;div id=&quot;dropItemInfo&quot;&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var di = document.getElementById(&quot;dropItemInfo&quot;);
function onDrop2(event) {
 var text = event.dataTransfer.getData(&quot;text/plain&quot;);
 di.innerHTML = escapeHTML(text);
}
function onDragOver2(event) {
 event.preventDefault();
}
function escapeHTML(str) {
 var div = document.createElement(&quot;div&quot;);
 var text = document.createTextNode(&quot;&quot;);
 div.appendChild(text);
 text.data = str;
 return div.innerHTML;
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;div id=&quot;dropSample&quot; ondragover=&quot;onDragOver2(event)&quot; onDrop=&quot;onDrop2(event)&quot; style=&quot;border:1px solid #0000FF;border-radius:4px; width:300px; height:200px&quot;&amp;gt;&lt;br /&gt;ここにドロップして下さい。&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div id=&quot;dropItemInfo&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;var di = document.getElementById(&quot;dropItemInfo&quot;);&lt;br /&gt;function onDrop2(event) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var text = event.dataTransfer.getData(&quot;text/plain&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; di.innerHTML = escapeHTML(text);&lt;br /&gt;}&lt;br /&gt;function onDragOver2(event) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; event.preventDefault();&lt;br /&gt;}&lt;br /&gt;function escapeHTML(str) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var div = document.createElement(&quot;div&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var text = document.createTextNode(&quot;&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; div.appendChild(text);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; text.data = str;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return div.innerHTML;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/7593638690514340804/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/7593638690514340804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/7593638690514340804'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/08/blog-post.html' title='他ブラウザからドロップする'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-20382385685844898</id><published>2011-07-31T21:46:00.003+09:00</published><updated>2011-08-02T10:04:05.130+09:00</updated><title type='text'>ファイルをブラウザにドロップして読み込む</title><content type='html'>ブラウザにドラッグしたファイルを読み込むには、「&lt;a href=&quot;http://master-html5.blogspot.com/2011/07/javascriptdatatransferdraggableimgadrag.html&quot;&gt;ドラッグ＆ドロップを検出する&lt;/a&gt;」と同じように、dropイベントを補足し、「&lt;a href=&quot;http://master-html5.blogspot.com/2011/07/blog-post_2135.html&quot;&gt;ローカルファイルを読み込む&lt;/a&gt;」と同じようにFileReaderでドロップされたデータを読み込むようにします。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
下の四角にエクスプローラ/ファインダー等からファイルをドラッグすると、ブラウザにファイルを読み込みます。&lt;br /&gt;
&lt;hr /&gt;
&lt;div id=&quot;dragAndDropSample&quot; ondragover=&quot;onDragOver2(event)&quot; ondrop=&quot;onDrop2(event)&quot; style=&quot;border-radius: 4px; border: 1px solid #0000FF; height: 200px; width: 300px;&quot;&gt;
ここにドロップして下さい。
&lt;/div&gt;
&lt;div id=&quot;info&quot;&gt;
&lt;/div&gt;
&lt;div id=&quot;view&quot;&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var info = document.getElementById(&quot;info&quot;);
var v = document.getElementById(&quot;view&quot;);
var fr = new FileReader();
function onDragOver2(event) {
 event.preventDefault();
}
function onDrop2(event) {
 var fs = event.dataTransfer.files;
 for ( var i = 0 ; i &lt; fs.length ; i++) {
  var f = fs[i];
  info.innerHTML = &quot;name:&quot; + f.name + &quot;  type:&quot; + f.type + &quot;  size:&quot; + f.size / 1000 + &quot; KB&quot;;
  if(/^image/.test(f.type)) {
   var img = document.createElement(&quot;img&quot;);
   fr.onload = function() {
    img.src = fr.result;
    v.appendChild(img);
   }
   fr.readAsDataURL(f);
  }
  if (/^text/.test(f.type)) {
   fr.onload = function() {
    v.innerHTML = fr.result;
   }
   fr.readAsText(f, &quot;utf-8&quot;);
  }
 }
 event.preventDefault();
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;div id=&quot;dragAndDropSample&quot; style=&quot;border: 1px solid #0000FF;border-radius:4px; width:300px; height:200px;&quot; onDragOver=&quot;onDragOver2(event)&quot; onDrop=&quot;onDrop2(event)&quot;&amp;gt;&lt;br /&gt;
ここにドロップして下さい。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&quot;info&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&quot;view&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
var info = document.getElementById(&quot;info&quot;);&lt;br /&gt;
var v = document.getElementById(&quot;view&quot;);&lt;br /&gt;
var fr = new FileReader();&lt;br /&gt;
function onDragOver2(event) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; event.preventDefault();&lt;br /&gt;
}&lt;br /&gt;
function onDrop2(event) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var fs = event.dataTransfer.files;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for ( var i = 0 ; i &amp;lt; fs.length ; i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var f = fs[i];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; info.innerHTML = &quot;name:&quot; + f.name + &quot;&amp;nbsp; type:&quot; + f.type + &quot;&amp;nbsp; size:&quot; + f.size / 1000 + &quot; KB&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if(/^image/.test(f.type)) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var img = document.createElement(&quot;img&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.onload = function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; img.src = fr.result;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; v.appendChild(img);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.readAsDataURL(f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (/^text/.test(f.type)) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.onload = function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; v.innerHTML = fr.result;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.readAsText(f, &quot;utf-8&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; event.preventDefault();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/20382385685844898/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_3920.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/20382385685844898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/20382385685844898'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_3920.html' title='ファイルをブラウザにドロップして読み込む'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-5157572929551697320</id><published>2011-07-31T21:29:00.000+09:00</published><updated>2011-07-31T21:29:49.572+09:00</updated><title type='text'>ローカルファイルを読み込む</title><content type='html'>ファイルを読み込むには、File APIのFileReaderを使用します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;input id=&quot;file&quot; multiple=&quot;&quot; name=&quot;files[]&quot; onchange=&quot;readFile()&quot; type=&quot;file&quot; /&gt;
&lt;br /&gt;
&lt;div id=&quot;progress&quot;&gt;
0%&lt;/div&gt;
&lt;div id=&quot;view&quot;&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
function readFile() {
 var fs = document.getElementById(&quot;file&quot;).files;
 var v = document.getElementById(&quot;view&quot;);
 v.innerHTML = &quot;&quot;;
 for ( var i = 0 ; i &lt; fs.length ; i++ ) {
  var f = fs[i];
  var fr = new FileReader();
  var p = document.getElementById(&quot;progress&quot;);
  if (f.type == &quot;image/jpeg&quot; || f.type == &quot;image/gif&quot; || f.type == &quot;image/png&quot;) {
   var img = document.createElement(&quot;img&quot;);
   fr.onload = function(event) {
    img.src = fr.result;
    v.appendChild(img);
   }
   fr.onerror = function() {
    v.innerHTML = &quot;エラーが発生しました。&quot;;
   }
   fr.onprogress = function(event) {
    p.innerHTML = Math.floor(event.loaded / event.total) * 100 + &quot;%&quot;;
   }
   fr.readAsDataURL(f);
  } else {
   fr.onload = function(event) {
    v.innerHTML = fr.result;
   }
   fr.onerror = function() {
    v.innerHTML = &quot;エラーが発生しました。&quot;;
   }
   fr.onprogress = function(event) {
    p.innerHTML = Math.floor(event.loaded / event.total) * 100 + &quot;%&quot;;
   }
   fr.readAsText(f, &quot;utf-8&quot;);
  }
 }
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;input type=&quot;file&quot; name=&quot;files[]&quot; id=&quot;file&quot; multiple onchange=&quot;readFile()&quot;&amp;gt;&lt;br /&gt;
&amp;lt;div id=&quot;progress&quot;&amp;gt;0%&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&quot;view&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function readFile() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var fs = document.getElementById(&quot;file&quot;).files;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var v = document.getElementById(&quot;view&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; v.innerHTML = &quot;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for ( var i = 0 ; i &amp;lt; fs.length ; i++ ) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var f = fs[i];&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var fr = new FileReader();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var p = document.getElementById(&quot;progress&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (f.type == &quot;image/jpeg&quot; || f.type == &quot;image/gif&quot; || f.type == &quot;image/png&quot;) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var img = document.createElement(&quot;img&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.onload = function(event) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; img.src = fr.result;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; v.appendChild(img);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.onerror = function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; v.innerHTML = &quot;エラーが発生しました。&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.onprogress = function(event) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; p.innerHTML = Math.floor(event.loaded / event.total) * 100 + &quot;%&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.readAsDataURL(f);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; } else {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.onload = function(event) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; v.innerHTML = fr.result;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.onerror = function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; v.innerHTML = &quot;エラーが発生しました。&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.onprogress = function(event) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; p.innerHTML = Math.floor(event.loaded / event.total) * 100 + &quot;%&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fr.readAsText(f, &quot;utf-8&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
上の例は、input要素でファイルを選択させ、選択後にファイルを読み込んでImageファイルの場合はimg要素を追加し、Image以外の場合はテキストとして読み込んで表示するようにしています。また読み込みの際、progressイベントを補足して進行度をパーセント表示させています。&lt;br /&gt;
FileReaderのメソッドは以下の物があります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;メソッド・プロパティ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;readAsBinaryString(ファイル)&lt;/td&gt;&lt;td&gt;バイナリとして読み込みます。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;readAsText(ファイル, エンコーディング)&lt;/td&gt;&lt;td&gt;テキストファイルを指定エンコーディングで読み込みます。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;readAsDataURL(ファイル)&lt;/td&gt;&lt;td&gt;ファイルをDataURL形式で読み込みます。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;abort()&lt;/td&gt;&lt;td&gt;ファイル読み込みを中断します。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;result&lt;/td&gt;&lt;td&gt;メソッドの実行結果を参照します。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
イベント一覧は以下の物があります。
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;イベント&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt;

&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;loadstart&lt;/td&gt;&lt;td&gt;読み込みが開始された&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;load&lt;/td&gt;&lt;td&gt;読み込みが正常終了&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;loadend&lt;/td&gt;&lt;td&gt;読み込みが終了（成功 or 失敗）&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;abort&lt;/td&gt;&lt;td&gt;読み込みが中断された&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;error&lt;/td&gt;&lt;td&gt;読み込みエラーが発生&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;progress&lt;/td&gt;&lt;td&gt;読み込み中&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/5157572929551697320/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_2135.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/5157572929551697320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/5157572929551697320'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_2135.html' title='ローカルファイルを読み込む'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-3238644691438941098</id><published>2011-07-31T21:26:00.000+09:00</published><updated>2011-07-31T21:26:28.733+09:00</updated><title type='text'>ファイル情報を取得する</title><content type='html'>File APIを使用すれば、filesでファイル情報を取得してローカルにあるファイルにアクセスすることができます。&lt;br /&gt;
filesで取得できる情報には以下の物があります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;プロパティ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;name&lt;/td&gt;&lt;td&gt;ファイル名&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;type&lt;/td&gt;&lt;td&gt;ファイルのMIME/TYPE&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;size&lt;/td&gt;&lt;td&gt;ファイルのバイトサイズ&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;urn&lt;/td&gt;&lt;td&gt;ファイルのURN&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;input id=&quot;file&quot; multiple=&quot;&quot; name=&quot;files[]&quot; onchange=&quot;getFiles()&quot; type=&quot;file&quot; /&gt;&lt;br /&gt;
&lt;span id=&quot;disp&quot;&gt;&lt;/span&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
function getFiles() {
 var files = document.getElementById(&quot;file&quot;).files;
 var disp = document.getElementById(&quot;disp&quot;);
 disp.innerHTML = &quot;&quot;;
 for(var i=0 ; i &lt; files.length; i++) {
  var file = files[i];
  disp.innerHTML += file.name + &quot; : &quot; + file.size/1000 + &quot; KB type:&quot; + file.type + &quot; URN:&quot; + file.urn + &quot;&lt;br&gt;&quot;;
 }
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;input type=&quot;file&quot; name=&quot;files[]&quot; id=&quot;file&quot; multiple onchange=&quot;getFiles()&quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;span id=&quot;disp&quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function getFiles() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;var files = document.getElementById(&quot;file&quot;).files;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;var disp = document.getElementById(&quot;disp&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;disp.innerHTML = &quot;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;for(var i=0 ; i &amp;lt; files.length; i++) {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;var file = files[i];&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;disp.innerHTML += file.name + &quot; : &quot; + file.size/1000 + &quot; KB type:&quot; + file.type + &quot; URN:&quot; + file.urn + &quot;&amp;lt;br&amp;gt;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/3238644691438941098/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_31.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/3238644691438941098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/3238644691438941098'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_31.html' title='ファイル情報を取得する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-5392326727703337788</id><published>2011-07-31T19:21:00.006+09:00</published><updated>2011-07-31T21:20:05.510+09:00</updated><title type='text'>ドラッグ＆ドロップを検出する</title><content type='html'>ドラッグ＆ドロップを検出するには、onDragStartのイベントを補足して、dataTransferのメソッドでデータを受け渡します。
draggable属性がデフォルトで有効なのはimg要素とa要素だけなので、その他はドラッグ＆ドロップを行わせる場合は明示的にdraggable=”true”に指定する必要があります。&lt;br /&gt;
&lt;br /&gt;
５つの花を四角の中にドロップして移動させるサンプルです。&lt;br /&gt;
&lt;hr /&gt;
&lt;img draggable=&quot;true&quot; id=&quot;flower&quot; ondragstart=&quot;onDragStart1(event)&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrN7GoVUmc8GWwlCrypw4f2ZMFCMZCQJvAKGxFIa9wOqK_ECXHs-Zo2sI5otcUc07B6PTudt60HymlNn6UJeHVh9M1wyagAzFO3fjpphPCDWsapTAxssPY5rBUuYHNwIV2fVcAlmcCTAQR/s1600/_Sunflower.gif&quot; /&gt;
&lt;img draggable=&quot;true&quot; id=&quot;dandellion&quot; ondragstart=&quot;onDragStart1(event)&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUFRjLRFcgpbOK4Wsu1Vxn1JpTFdsudqjftA7aLis-DL6kfxPC1yVoZRtAos4VoZ4DP58387QcGMox9i6gCdFPzKH8XtVCBVszxWRlxALs8vSjzyVARrBhr5HduOB-9oVVl03CYs9x2dX9/s1600/Dandelion.gif&quot; /&gt;
&lt;img draggable=&quot;true&quot; id=&quot;African Daisy&quot; ondragstart=&quot;onDragStart1(event)&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-8DlPX2EtuZTqgNwmhVVe790bdl6-SjcPKssqbovYxDjigJnvbGl2H5w9M_cR27vCHUQZvWJpSlw_c4bkXhwBospATjzSqyfVtKZHleRSaAUp3DCs_sZl-z2fIlt1N6dWlJz-cXJqkWEd/s1600/African+Daisy.gif&quot; /&gt;
&lt;img draggable=&quot;true&quot; id=&quot;Ixia&quot; ondragstart=&quot;onDragStart1(event)&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1oL5S3SeWlU3KXi5FAVaKNkZmUbwPQwKxJhnLKxXkXev-IrCLET55LGMH9SZhxHxFktkwXmmdiBrSXE18-iETdWJ13MuOGplhjxGG7kBA7tu7H-zDKt9Hx2uWLT2gVTYna5a_dMp_LEYE/s1600/Ixia.gif&quot; /&gt;
&lt;img draggable=&quot;true&quot; id=&quot;Spiked&quot; ondragstart=&quot;onDragStart1(event)&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg15pYaJtscUa0JI3AnlUte5n4Ado14vWIyegi5RVaqYlvhw1DAfTgaBte3nLJIAT0udeKO6hkrEfktIP6Hv4jAUk8dKjaF6Srf-742mTLfGlzNIMnlo_veE8pJcPQ86PPpDdR0nqjeaET7/s1600/Spiked.gif&quot; /&gt;
&lt;br /&gt;
&lt;div id=&quot;drop1&quot; ondragenter=&quot;onDragEnter1(event)&quot; ondragleave=&quot;onDragLeave1(event)&quot; ondragover=&quot;onDragOver1(event)&quot; ondrop=&quot;onDrop1(event)&quot; style=&quot;border-radius: 4px; border: 1px solid #0000FF; height: 100px; width: 400px;&quot;&gt;
ここにドロップして下さい。
&lt;/div&gt;
&lt;div id=&quot;debug&quot;&gt;
&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var debug = document.getElementById(&quot;debug&quot;);
function onDragStart1(event) {
 debug.innerHTML = &quot;Drag Start&quot;;
 event.dataTransfer.setData(&quot;text&quot;, event.target.id);
}
function onDrop1(event) {
 debug.innerHTML = &quot;On Drop&quot;;
 var id = event.dataTransfer.getData(&quot;text&quot;);
 var elm = document.getElementById(id);
 event.currentTarget.appendChild(elm);
 event.preventDefault();
}
function onDragOver1(event) {
 debug.innerHTML = &quot;On Drag Over&quot;;
 event.preventDefault();
}
function onDragEnter1(event) {
 debug.innerHTML = &quot;On Drag Enter&quot;;
}
function onDragLeave1(event) {
 debug.innerHTML = &quot;On Drag Leave&quot;;
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;img draggable=&quot;true&quot; id=&quot;flower&quot; ondragstart=&quot;onDragStart1(event)&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrN7GoVUmc8GWwlCrypw4f2ZMFCMZCQJvAKGxFIa9wOqK_ECXHs-Zo2sI5otcUc07B6PTudt60HymlNn6UJeHVh9M1wyagAzFO3fjpphPCDWsapTAxssPY5rBUuYHNwIV2fVcAlmcCTAQR/s1600/_Sunflower.gif&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;img draggable=&quot;true&quot; id=&quot;dandellion&quot; ondragstart=&quot;onDragStart1(event)&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUFRjLRFcgpbOK4Wsu1Vxn1JpTFdsudqjftA7aLis-DL6kfxPC1yVoZRtAos4VoZ4DP58387QcGMox9i6gCdFPzKH8XtVCBVszxWRlxALs8vSjzyVARrBhr5HduOB-9oVVl03CYs9x2dX9/s1600/Dandelion.gif&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;img draggable=&quot;true&quot; id=&quot;African Daisy&quot; ondragstart=&quot;onDragStart1(event)&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-8DlPX2EtuZTqgNwmhVVe790bdl6-SjcPKssqbovYxDjigJnvbGl2H5w9M_cR27vCHUQZvWJpSlw_c4bkXhwBospATjzSqyfVtKZHleRSaAUp3DCs_sZl-z2fIlt1N6dWlJz-cXJqkWEd/s1600/African+Daisy.gif&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;img draggable=&quot;true&quot; id=&quot;Ixia&quot; ondragstart=&quot;onDragStart1(event)&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1oL5S3SeWlU3KXi5FAVaKNkZmUbwPQwKxJhnLKxXkXev-IrCLET55LGMH9SZhxHxFktkwXmmdiBrSXE18-iETdWJ13MuOGplhjxGG7kBA7tu7H-zDKt9Hx2uWLT2gVTYna5a_dMp_LEYE/s1600/Ixia.gif&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;img draggable=&quot;true&quot; id=&quot;Spiked&quot; ondragstart=&quot;onDragStart1(event)&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg15pYaJtscUa0JI3AnlUte5n4Ado14vWIyegi5RVaqYlvhw1DAfTgaBte3nLJIAT0udeKO6hkrEfktIP6Hv4jAUk8dKjaF6Srf-742mTLfGlzNIMnlo_veE8pJcPQ86PPpDdR0nqjeaET7/s1600/Spiked.gif&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;div id=&quot;drop1&quot; ondragenter=&quot;onDragEnter1(event)&quot; ondragleave=&quot;onDragLeave1(event)&quot; ondragover=&quot;onDragOver1(event)&quot; ondrop=&quot;onDrop1(event)&quot; style=&quot;border-radius: 4px; border: 1px solid #0000FF; height: 100px; width: 400px;&quot;&amp;gt;&lt;br /&gt;
ここにドロップして下さい。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div id=&quot;debug&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
var debug = document.getElementById(&quot;debug&quot;);&lt;br /&gt;
function onDragStart1(event) {&lt;br /&gt;
&amp;nbsp;debug.innerHTML = &quot;Drag Start&quot;;&lt;br /&gt;
&amp;nbsp;event.dataTransfer.setData(&quot;text&quot;, event.target.id);&lt;br /&gt;
}&lt;br /&gt;
function onDrop1(event) {&lt;br /&gt;
&amp;nbsp;debug.innerHTML = &quot;On Drop&quot;;&lt;br /&gt;
&amp;nbsp;var id = event.dataTransfer.getData(&quot;text&quot;);&lt;br /&gt;
&amp;nbsp;var elm = document.getElementById(id);&lt;br /&gt;
&amp;nbsp;event.currentTarget.appendChild(elm);&lt;br /&gt;
&amp;nbsp;event.preventDefault();&lt;br /&gt;
}&lt;br /&gt;
function onDragOver1(event) {&lt;br /&gt;
&amp;nbsp;debug.innerHTML = &quot;On Drag Over&quot;;&lt;br /&gt;
&amp;nbsp;event.preventDefault();&lt;br /&gt;
}&lt;br /&gt;
function onDragEnter1(event) {&lt;br /&gt;
&amp;nbsp;debug.innerHTML = &quot;On Drag Enter&quot;;&lt;br /&gt;
}&lt;br /&gt;
function onDragLeave1(event) {&lt;br /&gt;
&amp;nbsp;debug.innerHTML = &quot;On Drag Leave&quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
onDrop1 / onDragOver1にある、「preventDefault()」は、デフォルトではDropイベントが無効化されているので、このメソッド呼び出しでDropイベントを有効化しています。&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;メソッド・プロパティ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;setData(key , value)&lt;/td&gt;&lt;td&gt;ドラッグ＆ドロップされるデータをセットする&lt;br /&gt;
keyには&quot;text&quot;か&quot;url&quot;のみ指定できる。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;getData(key)&lt;/td&gt;&lt;td&gt;ドラッグ＆ドロップされたデータを取得する&lt;br /&gt;
keyには&quot;text&quot;か&quot;url&quot;のみ指定できる。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;clearData&lt;/td&gt;&lt;td&gt;ドラッグ＆ドロップされたデータをクリアする&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;types&lt;/td&gt;&lt;td&gt;setDataメソッドでセットされた情報のtype(text/plain等)を取得する&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;files&lt;/td&gt;&lt;td&gt;他アプリケーションからドラッグされたファイル情報を取得する&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;setDragImage(image, X, Y)&lt;/td&gt;&lt;td&gt;ドラッグ中に表示されるイメージを指定する&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;addElement(element)&lt;/td&gt;&lt;td&gt;ドラッグ中に表示されるイメージに要素を追加する&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/5392326727703337788/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/javascriptdatatransferdraggableimgadrag.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/5392326727703337788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/5392326727703337788'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/javascriptdatatransferdraggableimgadrag.html' title='ドラッグ＆ドロップを検出する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrN7GoVUmc8GWwlCrypw4f2ZMFCMZCQJvAKGxFIa9wOqK_ECXHs-Zo2sI5otcUc07B6PTudt60HymlNn6UJeHVh9M1wyagAzFO3fjpphPCDWsapTAxssPY5rBUuYHNwIV2fVcAlmcCTAQR/s72-c/_Sunflower.gif" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-5915153459255186586</id><published>2011-07-30T00:21:00.025+09:00</published><updated>2011-08-26T17:58:28.123+09:00</updated><title type='text'>SVGを描画する</title><content type='html'>SVGとは、Scalable Vector Graphicsの略です。&lt;br /&gt;
HTML5では、外部ファイルにある拡張子がSVGのファイルを読み込んで表示させることができます。&lt;br /&gt;
SVGファイルはその名の通りベクターベースなので拡大してもピクセルがカクカクになったりしないという利点があります。また、XMLベースなのでグラフィックツールなどを利用して簡単にデータが作成できるという利点もあります。&lt;br /&gt;
&lt;br /&gt;
以下は四角形を描画する例です。&lt;br /&gt;
&lt;hr /&gt;
&lt;svg height=&quot;150&quot; width=&quot;300&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
 &lt;rect height=&quot;100&quot; style=&quot;fill: orange;&quot; width=&quot;100&quot; x=&quot;30&quot; y=&quot;30&quot;&gt;&lt;/rect&gt;
 &lt;rect height=&quot;100&quot; ry=&quot;8&quot; style=&quot;fill: black;&quot; width=&quot;100&quot; x=&quot;150&quot; y=&quot;30&quot;&gt;&lt;/rect&gt;
&lt;/svg&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;svg height=&quot;150&quot; width=&quot;300&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;rect height=&quot;100&quot; style=&quot;fill: orange;&quot; width=&quot;100&quot; x=&quot;30&quot; y=&quot;30&quot;&amp;gt;&amp;lt;/rect&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;rect height=&quot;100&quot; ry=&quot;8&quot; style=&quot;fill: black;&quot; width=&quot;100&quot; x=&quot;150&quot; y=&quot;30&quot;&amp;gt;&amp;lt;/rect&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
円の例です。&lt;br /&gt;
&lt;hr /&gt;
&lt;svg height=&quot;100&quot; width=&quot;100&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
 &lt;circle cx=&quot;50&quot; cy=&quot;50&quot; height=&quot;100&quot; r=&quot;50&quot; style=&quot;fill: blue;&quot; width=&quot;100&quot;&gt;&lt;/circle&gt;
&lt;/svg&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;svg height=&quot;100&quot; width=&quot;100&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;circle cx=&quot;50&quot; cy=&quot;50&quot; r=&quot;50&quot; style=&quot;fill: blue;&quot; width=&quot;100&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
楕円形です。
&lt;br /&gt;
&lt;hr /&gt;
&lt;svg height=&quot;100&quot; width=&quot;100&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
 &lt;ellipse cx=&quot;50&quot; cy=&quot;50&quot; rx=&quot;50&quot; ry=&quot;20&quot; style=&quot;fill: skyblue;&quot;&gt;
&lt;/ellipse&gt;&lt;/svg&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;svg height=&quot;100&quot; width=&quot;100&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;ellipse cx=&quot;50&quot; cy=&quot;50&quot; rx=&quot;50&quot; ry=&quot;20&quot; style=&quot;fill: skyblue;&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/ellipse&amp;gt;&amp;lt;/svg&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
線の例です。&lt;br /&gt;
&lt;hr /&gt;
&lt;svg height=&quot;200&quot; width=&quot;200&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
 &lt;polyline fill=&quot;none&quot; points=&quot;20,20 100,100 180,30&quot; stroke-width=&quot;3&quot; stroke=&quot;black&quot;&gt;&lt;/polyline&gt;
&lt;/svg&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;svg height=&quot;200&quot; width=&quot;200&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;polyline fill=&quot;none&quot; points=&quot;20,20 100,100 180,30&quot; stroke-width=&quot;3&quot; stroke=&quot;black&quot;&amp;gt;&amp;lt;/polyline&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
ポリゴンの例です。
&lt;br /&gt;
&lt;hr /&gt;
&lt;svg height=&quot;200&quot; width=&quot;200&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
 &lt;polygon fill=&quot;blue&quot; points=&quot;20,20 100,100 180,30&quot; stroke-width=&quot;3&quot; stroke=&quot;black&quot;&gt;&lt;/polygon&gt;
&lt;/svg&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;svg height=&quot;200&quot; width=&quot;200&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;polygon fill=&quot;blue&quot; points=&quot;20,20 100,100 180,30&quot; stroke-width=&quot;3&quot; stroke=&quot;black&quot;&amp;gt;&amp;lt;/polygon&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
グラフィックツールを使えば、パスやグラデーションを使った以下の様な絵もSVGで描画可能です。&lt;br /&gt;
&lt;hr /&gt;
&lt;svg enable-background=&quot;new 0 0 300 300&quot; height=&quot;300px&quot; id=&quot;レイヤー_1&quot; version=&quot;1.1&quot; viewbox=&quot;0 0 300 300&quot; width=&quot;300px&quot; x=&quot;0px&quot; xlink=&quot;http://www.w3.org/1999/xlink&quot; xml:space=&quot;preserve&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; y=&quot;0px&quot;&gt;
&lt;polygon fill=&quot;#FFFF00&quot; points=&quot;153,184 100.271,158.186 49.113,186.988 57.37,128.863 
 14.168,89.109 72,79 96.458,25.628 123.943,77.506 182.261,84.274 141.416,126.445 &quot; stroke-miterlimit=&quot;10&quot; stroke=&quot;#000000&quot;&gt;&lt;/polygon&gt;
&lt;path d=&quot;M239.192,113.619c4.675,4.697,4.657,12.296-0.04,16.971L119,231
 c-4.697,4.675-14.052,25.583-18.727,20.886l-8.465-8.505C87.133,238.684,109.303,228.675,114,224l99.757-118.926
 c4.696-4.675,12.295-4.657,16.97,0.04L239.192,113.619z&quot; fill=&quot;#C7B299&quot; stroke-miterlimit=&quot;10&quot; stroke=&quot;#000000&quot;&gt;&lt;/path&gt;
&lt;lineargradient gradienttransform=&quot;matrix(-0.9478, 0.3187, -0.3187, -0.9478, 540.828, 359.5)&quot; gradientunits=&quot;userSpaceOnUse&quot; id=&quot;SVGID_1_&quot; x1=&quot;207.1367&quot; x2=&quot;281.1367&quot; y1=&quot;233.4961&quot; y2=&quot;233.4961&quot;&gt;
 &lt;stop offset=&quot;0&quot; style=&quot;stop-color: #FFFFFF;&quot;&gt;&lt;/stop&gt;
 &lt;stop offset=&quot;0.1832&quot; style=&quot;stop-color: #FAFAFA;&quot;&gt;&lt;/stop&gt;
 &lt;stop offset=&quot;0.3909&quot; style=&quot;stop-color: #EDEDED;&quot;&gt;&lt;/stop&gt;
 &lt;stop offset=&quot;0.6108&quot; style=&quot;stop-color: #D6D6D6;&quot;&gt;&lt;/stop&gt;
 &lt;stop offset=&quot;0.8375&quot; style=&quot;stop-color: #B6B6B6;&quot;&gt;&lt;/stop&gt;
 &lt;stop offset=&quot;1&quot; style=&quot;stop-color: #9B9B9B;&quot;&gt;&lt;/stop&gt;
&lt;/lineargradient&gt;
&lt;circle cx=&quot;235&quot; cy=&quot;216.001&quot; fill=&quot;url(#SVGID_1_)&quot; r=&quot;37&quot; stroke-miterlimit=&quot;10&quot; stroke=&quot;#000000&quot;&gt;&lt;/circle&gt;
&lt;path d=&quot;M211.001,187.823C220.17,191.074,227,203.575,227,218.5
 c0,13.298-5.423,24.673-13.091,29.294&quot; fill=&quot;none&quot; stroke-miterlimit=&quot;10&quot; stroke=&quot;#000000&quot;&gt;&lt;/path&gt;
&lt;path d=&quot;M263.954,239.872c-6.184-2.017-12.876-13.377-15.964-27.979
 c-2.752-13.01-1.847-24.828,1.807-30.323&quot; fill=&quot;none&quot; stroke-miterlimit=&quot;10&quot; stroke=&quot;#000000&quot;&gt;&lt;/path&gt;
&lt;/svg&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Generator: Adobe Illustrator 15.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0)&amp;nbsp; --&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE svg PUBLIC &quot;-//W3C//DTD SVG 1.1//EN&quot; &quot;http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd&quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg version=&quot;1.1&quot; id=&quot;レイヤー_1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot; x=&quot;0px&quot;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;y=&quot;0px&quot; width=&quot;300px&quot; height=&quot;300px&quot; viewBox=&quot;0 0 300 300&quot; enable-background=&quot;new 0 0 300 300&quot; xml:space=&quot;preserve&quot;&amp;gt;&lt;br /&gt;
&amp;lt;polygon fill=&quot;#FFFF00&quot; stroke=&quot;#000000&quot; stroke-miterlimit=&quot;10&quot; points=&quot;153,184 100.271,158.186 49.113,186.988 57.37,128.863 &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 14.168,89.109 72,79 96.458,25.628 123.943,77.506 182.261,84.274 141.416,126.445 &quot;/&amp;gt;&lt;br /&gt;
&amp;lt;path fill=&quot;#C7B299&quot; stroke=&quot;#000000&quot; stroke-miterlimit=&quot;10&quot; d=&quot;M239.192,113.619c4.675,4.697,4.657,12.296-0.04,16.971L119,231&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c-4.697,4.675-14.052,25.583-18.727,20.886l-8.465-8.505C87.133,238.684,109.303,228.675,114,224l99.757-118.926&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c4.696-4.675,12.295-4.657,16.97,0.04L239.192,113.619z&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;linearGradient id=&quot;SVGID_1_&quot; gradientUnits=&quot;userSpaceOnUse&quot; x1=&quot;207.1367&quot; y1=&quot;233.4961&quot; x2=&quot;281.1367&quot; y2=&quot;233.4961&quot; gradientTransform=&quot;matrix(-0.9478 0.3187 -0.3187 -0.9478 540.8281 359.5)&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;stop&amp;nbsp; offset=&quot;0&quot; style=&quot;stop-color:#FFFFFF&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;stop&amp;nbsp; offset=&quot;0.1832&quot; style=&quot;stop-color:#FAFAFA&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;stop&amp;nbsp; offset=&quot;0.3909&quot; style=&quot;stop-color:#EDEDED&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;stop&amp;nbsp; offset=&quot;0.6108&quot; style=&quot;stop-color:#D6D6D6&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;stop&amp;nbsp; offset=&quot;0.8375&quot; style=&quot;stop-color:#B6B6B6&quot;/&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;stop&amp;nbsp; offset=&quot;1&quot; style=&quot;stop-color:#9B9B9B&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/linearGradient&amp;gt;&lt;br /&gt;
&amp;lt;circle fill=&quot;url(#SVGID_1_)&quot; stroke=&quot;#000000&quot; stroke-miterlimit=&quot;10&quot; cx=&quot;235&quot; cy=&quot;216.001&quot; r=&quot;37&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;path fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke-miterlimit=&quot;10&quot; d=&quot;M211.001,187.823C220.17,191.074,227,203.575,227,218.5&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c0,13.298-5.423,24.673-13.091,29.294&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;path fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke-miterlimit=&quot;10&quot; d=&quot;M263.954,239.872c-6.184-2.017-12.876-13.377-15.964-27.979&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; c-2.752-13.01-1.847-24.828,1.807-30.323&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
文字を描く例です。&lt;br /&gt;
&lt;hr /&gt;
&lt;svg height=&quot;200&quot; width=&quot;400&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
 &lt;text fill=&quot;skyblue&quot; font-family=&quot;sans-serif&quot; font-size=&quot;30&quot; stroke-width=&quot;1&quot; stroke=&quot;blue&quot; x=&quot;30&quot; y=&quot;30&quot;&gt;
テキストです。
 &lt;/text&gt;
 &lt;defs&gt;
  &lt;path d=&quot;M30,100 C100,100 150,200 200,100 C250,200 300,150 400,150&quot; id=&quot;textPath1&quot;&gt;&lt;/path&gt;
 &lt;/defs&gt;
 &lt;text fill=&quot;skyblue&quot; font-family=&quot;sans-serif&quot; font-size=&quot;30&quot; stroke-width=&quot;1&quot; stroke=&quot;blue&quot; x=&quot;30&quot; y=&quot;100&quot;&gt;
  &lt;textpath xlink:href=&quot;#textPath1&quot;&gt;パスに沿ったテキストです。&lt;/textpath&gt;
 &lt;/text&gt;
&lt;/svg&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;svg height=&quot;200&quot; width=&quot;400&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;text fill=&quot;skyblue&quot; font-family=&quot;sans-serif&quot; font-size=&quot;30&quot; stroke-width=&quot;1&quot; stroke=&quot;blue&quot; x=&quot;30&quot; y=&quot;30&quot;&amp;gt;&lt;br /&gt;
テキストです。&lt;br /&gt;
&amp;nbsp;&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;defs&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;path d=&quot;M30,100 C100,100 150,200 200,100 C250,200 300,150 400,150&quot; id=&quot;textPath1&quot;&amp;gt;&amp;lt;/path&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;/defs&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;text fill=&quot;skyblue&quot; font-family=&quot;sans-serif&quot; font-size=&quot;30&quot; stroke-width=&quot;1&quot; stroke=&quot;blue&quot; x=&quot;30&quot; y=&quot;100&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;lt;textpath xlink:href=&quot;#textPath1&quot;&amp;gt;パスに沿ったテキストです。&amp;lt;/textpath&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
以下は、外部にあるsvgファイルを表示する例です。ファイルは存在しないので以下ではエラーメッセージが表示されます。&lt;br /&gt;
&lt;hr /&gt;
&lt;object data=&quot;svgファイルのURL&quot; height=&quot;300&quot; type=&quot;image/svg+xml&quot; width=&quot;400&quot;&gt;&lt;/object&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;object data=&quot;svgファイルのURL&quot; type=&quot;image/svg+xml&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&amp;lt;/object&amp;gt;&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/5915153459255186586/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/svg.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/5915153459255186586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/5915153459255186586'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/svg.html' title='SVGを描画する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-694628171027065780</id><published>2011-07-29T23:49:00.000+09:00</published><updated>2011-07-29T23:49:33.554+09:00</updated><title type='text'>canvas上でアニメーションする</title><content type='html'>canvas上でアニメーションをさせるには、javascriptで繰り返し描画を行います。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
マウスを乗せると描画します。&lt;br /&gt;
&lt;hr /&gt;
&lt;canvas height=&quot;300&quot; id=&quot;drawAnimationOnCanvas1Canvas&quot; onmouseover=&quot;drawAnimationOnCanvas1();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot;&gt;
&lt;/canvas&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawAnimationOnCanvas1() {
 var c = document.getElementById(&quot;drawAnimationOnCanvas1Canvas&quot;);
 var context = c.getContext(&quot;2d&quot;);
 var width = c.width;
 var height = c.height;
 var cx = 150;
 var cy = 150;
 var r = 150;
 var d = 0;
 var fontSize = 1;
 var fontAdd = 0.02;
 setInterval(fire, 50);
 function fire() {
  context.clearRect(0, 0, c.width, c.height);
  context.fillStyle = &quot;#FFFFFF&quot;;
  context.fillRect(0, 0, c.width, c.height);
  var x = Math.cos(d * 360) * r + cx;
  var y = Math.sin(d * 360) * r / 2 + cy;
  context.fillStyle = &quot;#000000&quot;;
  context.font = fontSize + &quot;em &#39;Georgia&#39;&quot;;
  context.fillText(&quot;This is not a Flash&quot;, x, y);
  d += 0.07;
  fontSize += fontAdd;
  if (3 &lt; fontSize) fontAdd = -0.02;
  if (fontSize &lt;= 0.25) fontAdd = 0.02;
 }
}
&lt;/script&gt;
&lt;br /&gt;
&lt;hr /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;
&amp;lt;canvas id=&quot;drawAnimationOnCanvas1Canvas&quot; style=&quot;border: 1px solid;&quot; onmouseover=&quot;drawAnimationOnCanvas1();&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&lt;br /&gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;function drawAnimationOnCanvas1() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var c = document.getElementById(&quot;drawAnimationOnCanvas1Canvas&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var width = c.width;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var height = c.height;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var cx = 150;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var cy = 150;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var r = 150;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var d = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var fontSize = 1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var fontAdd = 0.02;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; setInterval(fire, 50);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; function fire() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.clearRect(0, 0, c.width, c.height);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillStyle = &quot;#FFFFFF&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillRect(0, 0, c.width, c.height);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var x = Math.cos(d * 360) * r + cx;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; var y = Math.sin(d * 360) * r / 2 + cy;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillStyle = &quot;#000000&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.font = fontSize + &quot;em &#39;Georgia&#39;&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillText(&quot;This is not a Flash&quot;, x, y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; d += 0.07;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; fontSize += fontAdd;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (3 &amp;lt; fontSize) fontAdd = -0.02;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if (fontSize &amp;lt;= 0.25) fontAdd = 0.02;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/694628171027065780/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/canvas_2590.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/694628171027065780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/694628171027065780'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/canvas_2590.html' title='canvas上でアニメーションする'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-2181180471932887330</id><published>2011-07-29T23:37:00.005+09:00</published><updated>2011-07-29T23:47:34.697+09:00</updated><title type='text'>canvasにグラフを描画する</title><content type='html'>グラフを描画するには、canvas要素に「四角形を描く」や「線を描く」等で紹介したメソッドを使って地道に書いていくか、ライブラリを使います。&lt;br /&gt;
ライブラリの説明はそれぞれのサイトをご覧下さい。&lt;br /&gt;
&lt;a href=&quot;http://www.rgraph.net/&quot;&gt;RGraph&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.html5.jp/&quot;&gt;html5.jp&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
マウスを乗せるとグラフを描画します。&lt;br /&gt;
&lt;hr /&gt;
&lt;canvas height=&quot;300&quot; id=&quot;drawGraphCanvas1&quot; onmouseover=&quot;drawGraph1();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot;&gt;&lt;br /&gt;
&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;Javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawGraph1() {
 var c = document.getElementById(&quot;drawGraphCanvas1&quot;);
 var context = c.getContext(&quot;2d&quot;);
 
 // プロットデータ
 var month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
 var attendance = [3, 5, 4, 7, 9, 5, 11, 13, 15, 20, 19, 22];
 var attendanceMax = 22; // attendanceの最大値
 
 var originalPoint = 50; // 原点座標
 var barInterval = 20;  // 棒グラフの間隔

 var graphHeight = c.height - originalPoint; // グラフの高さ取得
 var graphWidth = c.width - originalPoint;  // グラフの幅取得
 // １メモリの高さ
 var memHeight = Math.floor(graphHeight / attendanceMax);
 // 棒グラフの幅
 var barWidth = (graphWidth - barInterval * month.length) / month.length;
 
 // Ｘ軸を描画
 context.moveTo(originalPoint, graphHeight);
 context.lineTo(graphWidth + originalPoint, graphHeight);
 context.strokeStyle = &quot;#121212&quot;;
 context.stroke();
 // Ｙ軸を描画
 context.moveTo(originalPoint, 0);
 context.lineTo(originalPoint, graphHeight);
 context.stroke();

 // 棒グラフを描画
 var x = originalPoint + barInterval;
 var i = 0;
 for( i = 0 ; i &lt; month.length ; i++) {
  context.fillStyle = &quot;#FF1212&quot;;
  context.fillRect(x, graphHeight - (memHeight * attendance[i])
   , barWidth, memHeight * attendance[i]);
  
  context.fillStyle = &quot;#000000&quot;;
  context.fillText(attendance[i], x, graphHeight - (memHeight * attendance[i]) - 3);
  
  context.strokeStyle = &quot;#FF0000&quot;;
  context.stroke();
  context.fillStyle = &quot;#121212&quot;;
  context.fillText(month[i] + &quot;月&quot;, x, graphHeight + 15);
  x += barInterval + barWidth;
 }

 // メモリを描画
 var y = graphHeight - memHeight;
 for( i = 0 ; 0 &lt; y ; i++) {
  context.strokeStyle = &quot;#696969&quot;;
  context.moveTo(originalPoint, y);
  context.lineTo(graphWidth + originalPoint, y);
  context.stroke();
  
  if ( (i + 1) % 5 == 0 ) {
   context.fillStyle = &quot;#000000&quot;;
   context.fillText(i + 1, originalPoint - 20, y);
  }
  y -= memHeight;
 }
}
&lt;/script&gt;


&lt;br /&gt;
&lt;hr /&gt;
&lt;hr /&gt;
&amp;lt;canvas id=&quot;drawGraphCanvas1&quot; onmouseover=&quot;drawGraph1();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&lt;br /&gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;&amp;lt;script language=&quot;Javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;function drawGraph1() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var c = document.getElementById(&quot;drawGraphCanvas1&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // プロットデータ&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var month = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var attendance = [3, 5, 4, 7, 9, 5, 11, 13, 15, 20, 19, 22];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var attendanceMax = 22;&amp;nbsp;&amp;nbsp;&amp;nbsp; // attendanceの最大値&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var originalPoint = 50;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 原点座標&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var barInterval = 20;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // 棒グラフの間隔&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var graphHeight = c.height - originalPoint;&amp;nbsp;&amp;nbsp;&amp;nbsp; // グラフの高さ取得&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var graphWidth = c.width - originalPoint;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; // グラフの幅取得&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // １メモリの高さ&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var memHeight = Math.floor(graphHeight / attendanceMax);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 棒グラフの幅&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var barWidth = (graphWidth - barInterval * month.length) / month.length;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Ｘ軸を描画&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.moveTo(originalPoint, graphHeight);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(graphWidth + originalPoint, graphHeight);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.strokeStyle = &quot;#121212&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.stroke();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Ｙ軸を描画&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.moveTo(originalPoint, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(originalPoint, graphHeight);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.stroke();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 棒グラフを描画&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var x = originalPoint + barInterval;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var i = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( i = 0 ; i &amp;lt; month.length ; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillStyle = &quot;#FF1212&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillRect(x, graphHeight - (memHeight * attendance[i])&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; , barWidth, memHeight * attendance[i]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillStyle = &quot;#000000&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillText(attendance[i], x, graphHeight - (memHeight * attendance[i]) - 3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.strokeStyle = &quot;#FF0000&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.stroke();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillStyle = &quot;#121212&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillText(month[i] + &quot;月&quot;, x, graphHeight + 15);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; x += barInterval + barWidth;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // メモリを描画&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var y = graphHeight - memHeight;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( i = 0 ; 0 &amp;lt; y ; i++) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.strokeStyle = &quot;#696969&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.moveTo(originalPoint, y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(graphWidth + originalPoint, y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.stroke();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; if ( (i + 1) % 5 == 0 ) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillStyle = &quot;#000000&quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillText(i + 1, originalPoint - 20, y);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; y -= memHeight;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/2181180471932887330/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/canvas_29.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/2181180471932887330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/2181180471932887330'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/canvas_29.html' title='canvasにグラフを描画する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-4633671387533062503</id><published>2011-07-29T23:33:00.003+09:00</published><updated>2011-07-29T23:35:53.589+09:00</updated><title type='text'>canvasに文字を描画する</title><content type='html'>canvasにテキストを描画するには、以下のプロパティ、メソッドを使います。&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;メソッド・プロパティ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;font&lt;/td&gt;&lt;td&gt;フォントを指定&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;textAlign&lt;/td&gt;&lt;td&gt;表示位置の指定&lt;br /&gt;
left/center/right&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;textBaseline&lt;/td&gt;&lt;td&gt;テキストのベースラインを指定&lt;br /&gt;
位置は上からtop/hanging/middle/alphabetic/ideographic/bottomの順。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;fillText(text, X, Y)&lt;/td&gt;&lt;td&gt;塗りつぶしテキストを描画&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;fillText(text, X, Y, Width)&lt;/td&gt;&lt;td&gt;塗りつぶしテキストを描画&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;strokeText(text, X, Y)&lt;/td&gt;&lt;td&gt;線でテキストを描画&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;strokeText(text, X, Y, Width)&lt;/td&gt;&lt;td&gt;線でテキストを描画&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
マウスを乗せると文字を描画します。&lt;br /&gt;
&lt;hr /&gt;&lt;canvas height=&quot;400&quot; id=&quot;drawTextCanvas1&quot; onmouseover=&quot;drawText1();&quot; width=&quot;400&quot;&gt;&lt;br /&gt;
&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawText1() {
 var c = document.getElementById(&quot;drawTextCanvas1&quot;);
 var context = c.getContext(&quot;2d&quot;);
 var text = &quot;Baseline=top&quot;;
 context.font = &quot;1em &#39;Georgia&#39;&quot;;
 context.lineWidth = 1;
 context.fillStyle = &quot;#1212FF&quot;;
 context.strokeStyle = &quot;#0000FF&quot;;
 context.textBaseline = &quot;top&quot;;
 context.fillText (text, 80, 50);
 context.beginPath();
 context.moveTo(80, 50);
 context.lineTo(320, 50);
 context.stroke();

 text = &quot;Baseline=hanging&quot;;
 context.textBaseline = &quot;hanging&quot;;
 context.fillText(text, 80, 100);
 context.beginPath();
 context.moveTo(80, 100);
 context.lineTo(320, 100);
 context.stroke();

 text = &quot;Baseline=middle&quot;;
 context.textBaseline = &quot;middle&quot;;
 context.fillText(text, 80, 150);
 context.beginPath();
 context.moveTo(80, 150);
 context.lineTo(320, 150);
 context.stroke();

 text = &quot;Baseline=alphabetic&quot;;
 context.textBaseline = &quot;alphabetic&quot;;
 context.fillText(text, 80, 200);
 context.beginPath();
 context.moveTo(80, 200);
 context.lineTo(320, 200);
 context.stroke();

 text = &quot;Baseline=ideographic&quot;;
 context.textBaseline = &quot;ideographic&quot;;
 context.fillText(text, 80, 250);
 context.beginPath();
 context.moveTo(80, 250);
 context.lineTo(320, 250);
 context.stroke();

 text = &quot;Baseline=bottom&quot;;
 context.textBaseline = &quot;bottom&quot;;
 context.fillText(text, 80, 300);
 context.beginPath();
 context.moveTo(80, 300);
 context.lineTo(320, 300);
 context.stroke();

 text = &quot;縁取り文字&quot;;
 context.font = &quot;2em &#39;Georgia&#39;&quot;;
 context.strokeText(text, 80, 350);
 context.beginPath();
 context.moveTo(80, 350);
 context.lineTo(320, 350);
 context.stroke();
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;hr /&gt;&amp;lt;canvas id=&quot;drawTextCanvas1&quot; onmouseover=&quot;drawText1();&quot; width=&quot;400&quot; height=&quot;400&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function drawText1() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;var c = document.getElementById(&quot;drawTextCanvas1&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;var text = &quot;Baseline=top&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.font = &quot;1em &#39;Georgia&#39;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.lineWidth = 1;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.fillStyle = &quot;#1212FF&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.strokeStyle = &quot;#0000FF&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.textBaseline = &quot;top&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.fillText (text, 80, 50);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.moveTo(80, 50);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.lineTo(320, 50);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.stroke();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;text = &quot;Baseline=hanging&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.textBaseline = &quot;hanging&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.fillText(text, 80, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.moveTo(80, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.lineTo(320, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.stroke();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;text = &quot;Baseline=middle&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.textBaseline = &quot;middle&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.fillText(text, 80, 150);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.moveTo(80, 150);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.lineTo(320, 150);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.stroke();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;text = &quot;Baseline=alphabetic&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.textBaseline = &quot;alphabetic&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.fillText(text, 80, 200);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.moveTo(80, 200);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.lineTo(320, 200);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.stroke();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;text = &quot;Baseline=ideographic&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.textBaseline = &quot;ideographic&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.fillText(text, 80, 250);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.moveTo(80, 250);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.lineTo(320, 250);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.stroke();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;text = &quot;Baseline=bottom&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.textBaseline = &quot;bottom&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.fillText(text, 80, 300);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.moveTo(80, 300);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.lineTo(320, 300);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.stroke();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;text = &quot;縁取り文字&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.font = &quot;2em &#39;Georgia&#39;&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.strokeText(text, 80, 350);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.moveTo(80, 350);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.lineTo(320, 350);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.stroke();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/4633671387533062503/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/canvas.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/4633671387533062503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/4633671387533062503'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/canvas.html' title='canvasに文字を描画する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-1952971953831415854</id><published>2011-07-28T22:08:00.003+09:00</published><updated>2011-07-28T22:15:03.645+09:00</updated><title type='text'>イメージを描画する</title><content type='html'>イメージをcanvasに描画するには、drawImageメソッドを使います。&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;描画メソッド&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;drawImage(image, X, Y)&lt;/td&gt;&lt;td&gt;(X, Y)にimageを描画&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;drawImage(image, X, Y, W, H)&lt;/td&gt;&lt;td&gt;(X, Y)にimageを指定の大きさ(Width, Height)で描画&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;drawImage(image, X1, Y1, W1, H1, X2, Y2, W2, H2)&lt;/td&gt;&lt;td&gt;image画像から座標(X1, Y1)から大きさ(W1, H1)で切り取った後、(X2, Y2)から指定の大きさ(W2, H2)にコピーして描画&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
マウスを乗せると描画します。&lt;br /&gt;
&lt;hr /&gt;&lt;canvas id=&quot;drawImage1Canvas&quot; onmouseover=&quot;drawImage1();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;br /&gt;
&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawImage1() {
 var c = document.getElementById(&quot;drawImage1Canvas&quot;);
 var context = c.getContext(&quot;2d&quot;);
 var image = new Image();
 image.src = &quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrN7GoVUmc8GWwlCrypw4f2ZMFCMZCQJvAKGxFIa9wOqK_ECXHs-Zo2sI5otcUc07B6PTudt60HymlNn6UJeHVh9M1wyagAzFO3fjpphPCDWsapTAxssPY5rBUuYHNwIV2fVcAlmcCTAQR/s1600/_Sunflower.gif&quot;;
 image.onload = function() {
  context.drawImage(image, 10, 10, 400, 300);
 }
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;lt;canvas id=&quot;drawImage1Canvas&quot; style=&quot;border: 1px solid;&quot; onmouseover=&quot;drawImage1();&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function drawImage1() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var c = document.getElementById(&quot;drawImage1Canvas&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var image = new Image();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; image.src = &quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrN7GoVUmc8GWwlCrypw4f2ZMFCMZCQJvAKGxFIa9wOqK_ECXHs-Zo2sI5otcUc07B6PTudt60HymlNn6UJeHVh9M1wyagAzFO3fjpphPCDWsapTAxssPY5rBUuYHNwIV2fVcAlmcCTAQR/s1600/_Sunflower.gif&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; image.onload = function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.drawImage(image, 10, 10, 400, 300);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
マウスを乗せると描画します。&lt;br /&gt;
&lt;hr /&gt;&lt;canvas height=&quot;300&quot; id=&quot;drawImage2Canvas&quot; onmouseover=&quot;drawImage2();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot;&gt;&lt;br /&gt;
&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawImage2() {
 var c = document.getElementById(&quot;drawImage2Canvas&quot;);
 var context = c.getContext(&quot;2d&quot;);
 var image = new Image();
 image.src = &quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrN7GoVUmc8GWwlCrypw4f2ZMFCMZCQJvAKGxFIa9wOqK_ECXHs-Zo2sI5otcUc07B6PTudt60HymlNn6UJeHVh9M1wyagAzFO3fjpphPCDWsapTAxssPY5rBUuYHNwIV2fVcAlmcCTAQR/s1600/_Sunflower.gif&quot;;
 image.onload = function() {
  context.drawImage(image, 10, 10, 20, 30, 10, 10, 300, 400);
 }
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;hr /&gt;&amp;lt;canvas id=&quot;drawImage2Canvas&quot; style=&quot;border: 1px solid;&quot; onmouseover=&quot;drawImage2();&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function drawImage2() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var c = document.getElementById(&quot;drawImage2Canvas&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var image = new Image();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; image.src = &quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrN7GoVUmc8GWwlCrypw4f2ZMFCMZCQJvAKGxFIa9wOqK_ECXHs-Zo2sI5otcUc07B6PTudt60HymlNn6UJeHVh9M1wyagAzFO3fjpphPCDWsapTAxssPY5rBUuYHNwIV2fVcAlmcCTAQR/s1600/_Sunflower.gif&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; image.onload = function() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; context.drawImage(image, 10, 10, 20, 30, 10, 10, 300, 400);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/1952971953831415854/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_3699.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/1952971953831415854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/1952971953831415854'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_3699.html' title='イメージを描画する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-6445104442054971736</id><published>2011-07-28T22:03:00.002+09:00</published><updated>2011-07-28T22:06:11.527+09:00</updated><title type='text'>ベジェ曲線を描画する</title><content type='html'>ベジエ曲線を描画するには、以下のメソッドを使います。&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;描画メソッド&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;quadraticCurveTo(X1, Y1, X2, Y2)&lt;/td&gt;&lt;td&gt;現在位置から(X2, Y2)までのベジェ曲線を描画。その際、(X1, Y1)を使って２次ベジェ曲線カーブをかけます。&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;bezierCurveTo(X1, Y1, X2, Y2, X3, Y3)&lt;/td&gt;&lt;td&gt;現在位置から(X3, Y3)までのベジェ曲線を描画。その際、(X1, Y1), (X2, Y2)を使って３次ベジェ曲線カーブをかけます。&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
下の例は、赤線がquadraticCurveToを使った描画で、青線がbezierCurveToを使った描画です。&lt;br /&gt;
&lt;br /&gt;
マウスを乗せると描画します。&lt;br /&gt;
&lt;hr /&gt;&lt;canvas height=&quot;300&quot; id=&quot;drawBezierCurveCanvas&quot; onmouseover=&quot;drawBezierCurve();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot;&gt;&lt;br /&gt;
&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawBezierCurve() {
 var c = document.getElementById(&quot;drawBezierCurveCanvas&quot;); var context = c.getContext(&quot;2d&quot;);
 context.beginPath();
 context.moveTo(100, 50);
 context.quadraticCurveTo(300, 0, 300, 250);
 context.strokeStyle = &quot;#FF0000&quot;;
 context.stroke();

 context.beginPath();
 context.moveTo(100, 50);
 context.bezierCurveTo(300, 0, 300, 250, 350, 50);
 context.strokeStyle = &quot;#0000FF&quot;;
 context.stroke();
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;lt;canvas id=&quot;drawBezierCurveCanvas&quot; style=&quot;border: 1px solid;&quot; onmouseover=&quot;drawBezierCurve();&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function drawBezierCurve() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var c = document.getElementById(&quot;drawBezierCurveCanvas&quot;);&amp;nbsp;&amp;nbsp;&amp;nbsp; var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.moveTo(100, 50);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.quadraticCurveTo(300, 0, 300, 250);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.strokeStyle = &quot;#FF0000&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.stroke();&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.moveTo(100, 50);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.bezierCurveTo(300, 0, 300, 250, 350, 50);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.strokeStyle = &quot;#0000FF&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.stroke();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/6445104442054971736/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_3136.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/6445104442054971736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/6445104442054971736'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_3136.html' title='ベジェ曲線を描画する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-8805361254343111902</id><published>2011-07-28T21:53:00.006+09:00</published><updated>2011-07-28T22:01:05.055+09:00</updated><title type='text'>円を描く</title><content type='html'>円を描画するには、arcメソッドを使います。&lt;br /&gt;
&lt;br /&gt;
arc(X, Y, 開始角度, 終了角度, 反時計回り);&lt;br /&gt;
&lt;br /&gt;
角度はラジアンで指定します。また、時計回りに増加していきます。&lt;br /&gt;
&lt;br /&gt;
マウスを乗せると描画します。&lt;br /&gt;
&lt;hr /&gt;&lt;canvas id=&quot;drawArcCanvas1&quot; onmouseover=&quot;drawArc1();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot; height=&quot;300&quot;&gt;&lt;br /&gt;
&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawArc1() {
 var c = document.getElementById(&quot;drawArcCanvas1&quot;);
 var context = c.getContext(&quot;2d&quot;);
 context.arc(200, 150, 100, 0 , 2 * Math.PI, false);
 context.strokeStyle = &quot;#FFCCCC&quot;;
 context.lineWidth = 6;
 context.fillStyle = &quot;#CCCCFF&quot;;
 context.fill();
 context.stroke();
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;hr /&gt;&amp;lt;canvas id=&quot;drawArcCanvas1&quot; style=&quot;border: 1px solid;&quot; onmouseover=&quot;drawArc1();width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function drawArc1() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;var c = document.getElementById(&quot;drawArcCanvas1&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.arc(200, 150, 100, 0 , 2 * Math.PI, false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.strokeStyle = &quot;#FFCCCC&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.lineWidth = 6;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.fillStyle = &quot;#CCCCFF&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.fill();&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;context.stroke();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
マウスを乗せると描画します。&lt;br /&gt;
&lt;hr /&gt;&lt;canvas height=&quot;300&quot; id=&quot;drawArcCanvas2&quot; onmouseover=&quot;drawArc2();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot;&gt;&lt;br /&gt;
&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawArc2() {
 var c = document.getElementById(&quot;drawArcCanvas2&quot;);
 var context = c.getContext(&quot;2d&quot;);
 context.arc(200, 150, 100, 0, Math.PI / 2, false);
 context.strokeStyle = &quot;#FFCCCC&quot;;
 context.lineWidth = 6;
 context.fillStyle = &quot;#CCCCFF&quot;;
 context.fill();
 context.stroke();
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;hr /&gt;&amp;lt;canvas id=&quot;drawArcCanvas2&quot; style=&quot;border: 1px solid;&quot; onmouseover=&quot;drawArc2();&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function drawArc2() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var c = document.getElementById(&quot;drawArcCanvas2&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.arc(200, 150, 100, 0, Math.PI / 2, false);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.strokeStyle = &quot;#FFCCCC&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineWidth = 6;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillStyle = &quot;#CCCCFF&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.fill();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.stroke();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/8805361254343111902/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_9137.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/8805361254343111902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/8805361254343111902'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_9137.html' title='円を描く'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-3226285068809099843</id><published>2011-07-28T21:27:00.003+09:00</published><updated>2011-07-28T21:45:52.001+09:00</updated><title type='text'>パスにグラデーションで色を塗る</title><content type='html'>パスにグラデーションで色を塗るには、pathStyleにグラデーションを指定します。&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;描画メソッド/プロパティ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;createLinearGradient(x1, y1, x2, y2)&lt;/td&gt;&lt;td&gt;線形グラデーションの生成&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;createRadialGradient(x1, y1, r1, x2, y2, r2)&lt;/td&gt;&lt;td&gt;円形グラデーションの生成&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;addColorStop(オフセット, 色)&lt;/td&gt;&lt;td&gt;グラデーションの色を指定&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;canvas height=&quot;300&quot; id=&quot;drawGradientPathCanvas1&quot; onmouseover=&quot;drawGradientPath1();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot;&gt;&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawGradientPath1() {
 var c = document.getElementById(&quot;drawGradientPathCanvas1&quot;);
 var context = c.getContext(&quot;2d&quot;);
 context.beginPath();
 context.moveTo(50, 100);
 context.lineTo(350, 100);
 context.lineTo(80, 250);
 context.lineTo(200, 50);
 context.lineTo(320, 250);
 context.closePath();
 var g = context.createLinearGradient(0, 0, 300, 300);
 g.addColorStop(0.3, &quot;#FF0000&quot;);
 g.addColorStop(1, &quot;#00FF00&quot;);
 context.fillStyle = g;
 context.fill();
 context.stroke();
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;lt;canvas id=&quot;drawGradientPathCanvas1&quot; onmouseover=&quot;drawGradientPath1();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function drawGradientPath1() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var c = document.getElementById(&quot;drawGradientPathCanvas1&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.moveTo(50, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(350, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(80, 250);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(200, 50);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(320, 250);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.closePath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var g = context.createLinearGradient(0, 0, 300, 300);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; g.addColorStop(0.3, &quot;#FF0000&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; g.addColorStop(1, &quot;#00FF00&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillStyle = g;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.fill();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.stroke();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
以下の例は、上の「createLinearGradient」を「createRadialGradient」に変えただけの例になります。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;canvas height=&quot;300&quot; id=&quot;drawGradientPathCanvas2&quot; onmouseover=&quot;drawGradientPath2();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot;&gt;&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawGradientPath2() {
 var c = document.getElementById(&quot;drawGradientPathCanvas2&quot;);
 var context = c.getContext(&quot;2d&quot;);
 context.beginPath();
 context.moveTo(50, 100);
 context.lineTo(350, 100);
 context.lineTo(80, 250);
 context.lineTo(200, 50);
 context.lineTo(320, 250);
 context.closePath();
 var g = context.createRadialGradient(200, 150, 50, 200, 150, 100);
 g.addColorStop(0.3, &quot;#FF0000&quot;);
 g.addColorStop(1, &quot;#00FF00&quot;);
 context.fillStyle = g;
 context.fill();
 context.stroke();
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;hr /&gt;&amp;lt;canvas id=&quot;drawGradientPathCanvas2&quot; style=&quot;border: 1px solid;&quot; onmouseover=&quot;drawGradientPath2();&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function drawGradientPath2() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var c = document.getElementById(&quot;drawGradientPathCanvas2&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.moveTo(50, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(350, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(80, 250);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(200, 50);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(320, 250);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.closePath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var g = context.createRadialGradient(200, 150, 50, 200, 150, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; g.addColorStop(0.3, &quot;#FF0000&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; g.addColorStop(1, &quot;#00FF00&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillStyle = g;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.fill();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.stroke();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/3226285068809099843/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_8470.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/3226285068809099843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/3226285068809099843'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_8470.html' title='パスにグラデーションで色を塗る'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-7398986560106406970</id><published>2011-07-28T21:25:00.000+09:00</published><updated>2011-07-28T21:25:27.282+09:00</updated><title type='text'>パスに色を塗る</title><content type='html'>canvas要素にパスを描画したら、それに色を塗ることもできます。&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;描画メソッド/プロパティ&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;strokeStyle&lt;/td&gt;&lt;td&gt;線の色を指定&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;lineWidth&lt;/td&gt;&lt;td&gt;線の太さを指定&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;fillStyle&lt;/td&gt;&lt;td&gt;塗りつぶしの色を指定&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;fill()&lt;/td&gt;&lt;td&gt;塗りつぶしの実行&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;canvas height=&quot;300&quot; id=&quot;drawFillPathCanvas&quot; onmouseover=&quot;drawFillPath();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot;&gt;&lt;br /&gt;
&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawFillPath() {
 var c = document.getElementById(&quot;drawFillPathCanvas&quot;);
 var context = c.getContext(&quot;2d&quot;);
 context.beginPath();
 context.moveTo(50, 100);
 context.lineTo(350, 100);
 context.lineTo(80, 250);
 context.lineTo(200, 50);
 context.lineTo(320, 250);
 context.closePath();
 context.strokeStyle = &quot;#CACAFF&quot;;
 context.lineWidth = 8;
 context.fillStyle = &quot;#FFCACA&quot;;
 context.fill();
 context.stroke();
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;lt;canvas id=&quot;drawFillPathCanvas&quot; onmouseover=&quot;drawFillPath();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function drawFillPath() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var c = document.getElementById(&quot;drawFillPathCanvas&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.moveTo(50, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(350, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(80, 250);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(200, 50);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(320, 250);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.closePath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.strokeStyle = &quot;#CACAFF&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineWidth = 8;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.fillStyle = &quot;#FFCACA&quot;;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.fill();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.stroke();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/7398986560106406970/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_2992.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/7398986560106406970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/7398986560106406970'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_2992.html' title='パスに色を塗る'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-7660005418556290218</id><published>2011-07-28T21:20:00.000+09:00</published><updated>2011-07-28T21:20:09.359+09:00</updated><title type='text'>線を描く</title><content type='html'>絵を描けるようにするには、canvas要素を追加します。&lt;br /&gt;
canvas要素内で以下のメソッドで描画します。&lt;br /&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;描画メソッド&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;beginPath&lt;/td&gt;&lt;td&gt;パスの開始&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;moveTo&lt;/td&gt;&lt;td&gt;X, Yに移動&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;lineTo&lt;/td&gt;&lt;td&gt;X, Yに向けて線を描画&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;closePath&lt;/td&gt;&lt;td&gt;パスを閉じて描画（最後に始点に向かってパスが引かれます）&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;stroke&lt;/td&gt;&lt;td&gt;パスを線として表示&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;canvas height=&quot;300&quot; id=&quot;drawPathCanvas&quot; onmouseover=&quot;drawPath();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot;&gt;&lt;br /&gt;
&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawPath() {
 var c = document.getElementById(&quot;drawPathCanvas&quot;);
 var context = c.getContext(&quot;2d&quot;);
 context.beginPath();
 context.moveTo(100, 100);
 context.lineTo(300, 200);
 context.stroke();
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;hr /&gt;&amp;lt;canvas id=&quot;drawPathCanvas&quot; onmouseover=&quot;drawPath();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function drawPath() {&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var c = document.getElementById(&quot;drawPathCanvas&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.beginPath();&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.moveTo(100, 100);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.lineTo(300, 200);&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; context.stroke();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/7660005418556290218/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_7739.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/7660005418556290218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/7660005418556290218'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_7739.html' title='線を描く'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-2532916981598418487</id><published>2011-07-28T20:54:00.002+09:00</published><updated>2011-07-28T20:56:16.470+09:00</updated><title type='text'>四角形を描画する</title><content type='html'>絵を描けるようにするには、canvas要素を追加します。&lt;br /&gt;
canvas要素内で以下のメソッドで描画します。&lt;br /&gt;
&lt;br /&gt;
パラメータは全て(x, y, 幅, 高さ)です。&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;描画メソッド&lt;/td&gt;&lt;td&gt;内容&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;fillRect&lt;/td&gt;&lt;td&gt;塗りつぶし四角形を描画&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;clearRect&lt;/td&gt;&lt;td&gt;四角形をクリア&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;strokeRect&lt;/td&gt;&lt;td&gt;四角形の専を描画&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
マウスを乗せると描画します。&lt;br /&gt;
&lt;hr /&gt;&lt;canvas height=&quot;300&quot; id=&quot;drawCanvas&quot; onmouseover=&quot;drawRect();&quot; style=&quot;border: 1px solid;&quot; width=&quot;400&quot;&gt;このブラウザではcanvasは非対応です。&lt;/canvas&gt;&lt;br /&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
function drawRect() {
 var c = document.getElementById(&quot;drawCanvas&quot;);
 var context = c.getContext(&quot;2d&quot;);
 context.fillRect(40, 40, 200, 200);
 context.clearRect(50, 50, 150, 150);
 context.strokeRect(60, 60, 100, 100);
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&amp;lt;canvas id=&quot;drawCanvas&quot; onmouseover=&quot;drawRect();&quot; style=&quot;border:1px solid;&quot; width=&quot;400&quot; height=&quot;300&quot;&amp;gt;このブラウザではcanvasは非対応です。&amp;lt;/canvas&amp;gt;&lt;br /&gt;
&amp;lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
function drawRect() {&lt;br /&gt;
&amp;nbsp;var c = document.getElementById(&quot;drawCanvas&quot;);&lt;br /&gt;
&amp;nbsp;var context = c.getContext(&quot;2d&quot;);&lt;br /&gt;
&amp;nbsp;context.fillRect(40, 40, 200, 200);&lt;br /&gt;
&amp;nbsp;context.clearRect(50, 50, 150, 150);&lt;br /&gt;
&amp;nbsp;context.strokeRect(60, 60, 100, 100);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/2532916981598418487/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_987.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/2532916981598418487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/2532916981598418487'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_987.html' title='四角形を描画する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-5308086948615471628</id><published>2011-07-28T20:45:00.000+09:00</published><updated>2011-07-28T20:45:17.893+09:00</updated><title type='text'>音声ファイルを再生する</title><content type='html'>音声ファイルを再生するには、audio要素を使います。&lt;br /&gt;
プロパティや操作などは基本的にビデオの再生と同じ物が使用できます。（poster（ロード中の画像表示）以外）&lt;br /&gt;
詳細は「ビデオを再生する」「&lt;a href=&quot;http://master-html5.blogspot.com/2011/07/javascript.html&quot;&gt;Javascriptからビデオにアクセスする&lt;/a&gt;」を参照して下さい。</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/5308086948615471628/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_28.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/5308086948615471628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/5308086948615471628'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/blog-post_28.html' title='音声ファイルを再生する'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2470484580159671104.post-1241356752051182291</id><published>2011-07-27T20:26:00.004+09:00</published><updated>2011-07-27T20:35:15.557+09:00</updated><title type='text'>Javascriptからビデオ要素にアクセスする</title><content type='html'>video要素にJavascriptからアクセスするには、「getElementById」を使用します。&lt;br /&gt;
getElementByIdで得られたvideo要素に対し、以下のものを使ってアクセスすることが可能です。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
メソッド一覧&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;メソッド&lt;/td&gt;&lt;td&gt;意味&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;load()&lt;/td&gt;&lt;td&gt;ファイルの読み込みを行う&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;play()&lt;/td&gt;&lt;td&gt;ファイルの再生を行う&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;pause()&lt;/td&gt;&lt;td&gt;ファイルの再生の一時停止を行う&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;canPlayType(MIMEタイプ)&lt;/td&gt;&lt;td&gt;指定MIMEタイプが再生可能か判断する&lt;br /&gt;
maybe:再生可能&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
プロパティ一覧&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;プロパティ&lt;/td&gt;&lt;td&gt;意味&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;currentSrc&lt;/td&gt;&lt;td&gt;現在再生しているファイルのURL。参照のみ&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;duration&lt;/td&gt;&lt;td&gt;再生時間の長さ（秒）。参照のみ&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ended&lt;/td&gt;&lt;td&gt;再生が終了したかどうか&lt;br /&gt;
true:再生終了。参照のみ&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;error&lt;/td&gt;&lt;td&gt;エラー時のエラーコード。参照のみ&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;played&lt;/td&gt;&lt;td&gt;再生済みの時間範囲（TimeRanges型）。参照のみ&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;seekable&lt;/td&gt;&lt;td&gt;シーク可能な時間範囲（TimeRanges型）。参照のみ&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;seeking&lt;/td&gt;&lt;td&gt;指定された再生位置に移動中&lt;br /&gt;
true:シーク中。参照のみ&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;startTime&lt;/td&gt;&lt;td&gt;再生開始位置（秒数）。参照のみ&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;src&lt;/td&gt;&lt;td&gt;動画ファイルのURL&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;readyState&lt;/td&gt;&lt;td&gt;メディアのダウンロード状態&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;currentTime&lt;/td&gt;&lt;td&gt;現在の再生位置（秒）&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;defaultPlaybackRate&lt;/td&gt;&lt;td&gt;デフォルトの再生速度。デフォルトは1.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;playbackRate&lt;/td&gt;&lt;td&gt;再生速度。デフォルトは1.0。巻き戻しはマイナス値&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;preload&lt;/td&gt;&lt;td&gt;preload属性。&lt;br /&gt;
auto:自動読み込み有効&lt;br /&gt;
metadata:メタデータのみ&lt;br /&gt;
none:自動読み込み無し&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;loop&lt;/td&gt;&lt;td&gt;繰り返し再生をするか&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;controls&lt;/td&gt;&lt;td&gt;コントロールを表示するか&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;volume&lt;/td&gt;&lt;td&gt;音声のボリューム。0.0〜1.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;muted&lt;/td&gt;&lt;td&gt;ミュートするか。&lt;br /&gt;
true:ミュート&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
イベント一覧&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;thead&gt;
&lt;tr&gt;&lt;td&gt;イベント&lt;/td&gt;&lt;td&gt;発生条件&lt;/td&gt;&lt;/tr&gt;
&lt;/thead&gt; &lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;loadstart&lt;/td&gt;&lt;td&gt;メディアデータのロード開始&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;progress&lt;/td&gt;&lt;td&gt;メディアデータの読み込み中&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;suspend&lt;/td&gt;&lt;td&gt;サスペンドした&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;abort&lt;/td&gt;&lt;td&gt;中断された&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;error&lt;/td&gt;&lt;td&gt;エラーが発生した&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;emptied&lt;/td&gt;&lt;td&gt;メディアデータが空&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;stalled&lt;/td&gt;&lt;td&gt;中断した&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;play&lt;/td&gt;&lt;td&gt;再生開始&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;pause&lt;/td&gt;&lt;td&gt;再生停止&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;load&lt;/td&gt;&lt;td&gt;メディアのダウンロード完了&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;loadedmetadata&lt;/td&gt;&lt;td&gt;メタデータのダウンロード完了&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;loadeddata&lt;/td&gt;&lt;td&gt;データの読み込みが完了&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;waiting&lt;/td&gt;&lt;td&gt;待機中&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;playing&lt;/td&gt;&lt;td&gt;再生中&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;canplay&lt;/td&gt;&lt;td&gt;再生可能&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;canplaythrough&lt;/td&gt;&lt;td&gt;最後まで再生可能&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;seeking&lt;/td&gt;&lt;td&gt;シーク中&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;seeked&lt;/td&gt;&lt;td&gt;シーク終了&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;timeupdate&lt;/td&gt;&lt;td&gt;再生中は１秒間隔で発生&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ended&lt;/td&gt;&lt;td&gt;再生終了&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ratechange&lt;/td&gt;&lt;td&gt;再生速度が変更された&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;durationchange&lt;/td&gt;&lt;td&gt;再生時間が変更された&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;volumechange&lt;/td&gt;&lt;td&gt;音量が変更された &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
下の例は、ビデオを再生中にtimeupdateイベントを補足して時間と再生率を表示する例です。&lt;br /&gt;
&lt;br /&gt;
&lt;hr /&gt;&lt;video height=&quot;300&quot; id=&quot;playMovie&quot; poster=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrN7GoVUmc8GWwlCrypw4f2ZMFCMZCQJvAKGxFIa9wOqK_ECXHs-Zo2sI5otcUc07B6PTudt60HymlNn6UJeHVh9M1wyagAzFO3fjpphPCDWsapTAxssPY5rBUuYHNwIV2fVcAlmcCTAQR/s1600/_Sunflower.gif&quot; preload=&quot;auto&quot; width=&quot;400&quot;&gt;&lt;br /&gt;
&lt;source src=&quot;https://docs.google.com/uc?id=0B_-pW_pm0gmnOTQxMDlkYzUtNjk0OS00OGM3LWI4ODAtZWM3Y2Y5YzZkMTYx&amp;amp;export=download&amp;amp;hl=en_US&quot; type=&quot;video/mp4; codecs=&#39;avc1.42E01E,mp4a.40.2&#39;&quot;&gt;&lt;/source&gt;&lt;br /&gt;
&lt;source src=&quot;OGG%E7%94%A8%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AEURL.ogg&quot; type=&quot;video/ogg; codecs=&#39;theora, vorbis&#39;&quot;&gt;&lt;/source&gt;&lt;br /&gt;
&lt;object data=&quot;player.swf&quot; type=&quot;application/x-shockwave-flash&quot;&gt; &lt;param name=&quot;movie&quot; value=&quot;フラッシュ用ファイルのURL.swf&quot;&gt;&lt;/object&gt;&lt;br /&gt;
&lt;/video&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;input onclick=&quot;startVideo()&quot; type=&quot;button&quot; value=&quot;再生&quot; /&gt;&lt;br /&gt;
&lt;span id=&quot;progress&quot; name=&quot;progress&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var v = document.getElementById(&quot;playMovie&quot;);
function startVideo() {
 v.play();
 v.addEventListener(&quot;timeupdate&quot;, fire, false);
}
function fire() {
 var prg = document.getElementById(&quot;progress&quot;);
 var rate = Math.floor(v.currentTime) / Math.floor(v.duration) * 100;
 rate = Math.round(rate);
 prg.innerHTML = Math.floor(v.currentTime) + &quot;/&quot; + Math.floor(v.duration) + &quot;  &quot; + rate + &quot;%&quot;;
}
&lt;/script&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;br /&gt;
&lt;hr /&gt;&amp;lt;video height=&quot;300&quot; id=&quot;playMovie&quot; poster=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrN7GoVUmc8GWwlCrypw4f2ZMFCMZCQJvAKGxFIa9wOqK_ECXHs-Zo2sI5otcUc07B6PTudt60HymlNn6UJeHVh9M1wyagAzFO3fjpphPCDWsapTAxssPY5rBUuYHNwIV2fVcAlmcCTAQR/s1600/_Sunflower.gif&quot; preload=&quot;auto&quot; width=&quot;400&quot;&amp;gt;&lt;br /&gt;
&amp;lt;source src=&quot;https://docs.google.com/uc?id=0B_-pW_pm0gmnOTQxMDlkYzUtNjk0OS00OGM3LWI4ODAtZWM3Y2Y5YzZkMTYx&amp;amp;amp;export=download&amp;amp;amp;hl=en_US&quot; type=&quot;video/mp4; codecs=&#39;avc1.42E01E,mp4a.40.2&#39;&quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;source src=&quot;OGG用ファイルのURL.ogg&quot; type=&quot;video/ogg; codecs=&#39;theora, vorbis&#39;&quot;&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;object data=&quot;player.swf&quot; type=&quot;application/x-shockwave-flash&quot;&amp;gt; &amp;lt;param name=&quot;movie&quot; value=&quot;フラッシュ用ファイルのURL.swf&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/object&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;input onclick=&quot;startVideo()&quot; type=&quot;button&quot; value=&quot;再生&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;span id=&quot;progress&quot; name=&quot;progress&quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br /&gt;
var v = document.getElementById(&quot;playMovie&quot;);&lt;br /&gt;
function startVideo() {&lt;br /&gt;
&amp;nbsp;v.play();&lt;br /&gt;
&amp;nbsp;v.addEventListener(&quot;timeupdate&quot;, fire, false);&lt;br /&gt;
}&lt;br /&gt;
function fire() {&lt;br /&gt;
&amp;nbsp;var prg = document.getElementById(&quot;progress&quot;);&lt;br /&gt;
&amp;nbsp;var rate = Math.floor(v.currentTime) / Math.floor(v.duration) * 100;&lt;br /&gt;
&amp;nbsp;rate = Math.round(rate);&lt;br /&gt;
&amp;nbsp;prg.innerHTML = Math.floor(v.currentTime) + &quot;/&quot; + Math.floor(v.duration) + &quot;&amp;nbsp; &quot; + rate + &quot;%&quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;hr /&gt;</content><link rel='replies' type='application/atom+xml' href='http://master-html5.blogspot.com/feeds/1241356752051182291/comments/default' title='コメントの投稿'/><link rel='replies' type='text/html' href='http://master-html5.blogspot.com/2011/07/javascript.html#comment-form' title='0 件のコメント'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/1241356752051182291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2470484580159671104/posts/default/1241356752051182291'/><link rel='alternate' type='text/html' href='http://master-html5.blogspot.com/2011/07/javascript.html' title='Javascriptからビデオ要素にアクセスする'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>