<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>寝る前にラーメン &#187; JavaScript</title>
	<atom:link href="http://thleave.com/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://thleave.com</link>
	<description>学生エンジニアのコードに関する忘備録</description>
	<lastBuildDate>Mon, 30 Aug 2010 15:41:01 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>今さらだけどJSONとAjax せっかくだからJSONP with jQuery</title>
		<link>http://thleave.com/coding/318</link>
		<comments>http://thleave.com/coding/318#comments</comments>
		<pubDate>Sun, 04 Jul 2010 22:28:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://thleave.com/?p=318</guid>
		<description><![CDATA[今さらだけど、「JSONPってなんだ？」って思ったのでまとめてみる。

まず、JSONとAjaxについて整理。
JSON(JavaScript Object Notation)

オブジェクトまたは配列として実現されるデ [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>今さらだけど、「JSONPってなんだ？」って思ったのでまとめてみる。</p>
<p><span id="more-318"></span></p>
<p>まず、JSONとAjaxについて整理。</p>
<h3>JSON(JavaScript Object Notation)</h3>
<ul>
<li>オブジェクトまたは配列として実現される<strong>データ記述言語</strong>。フォーマット。</li>
<li>MIMEタイプは&#8221;application/json&#8221; 拡張子は&#8221;.json&#8221;</li>
<li>（殆ど）そのままJavaScriptの配列/オブジェクトとして扱えるので便利</li>
<li>単純で軽量。パースのコストもXMLなどに比べて安い。</li>
<li>Ajaxの普及と共に注目を浴びた。</li>
</ul>
<p>（AjaxのxはXMLだけど、）今ではJSONを使っている非同期アプリケーションのが多いよね。</p>
<h3>Ajax(Asynchronous JavaScript + XML)</h3>
<ul>
<li>JavaScriptのXMLHttpRequestとXML（今はJSONが多い）を使った非同期通信</li>
<li>セキュリティーの都合のため、<strong>XMLHttpRequestはクロスドメイン間の通信は出来ない。</strong></li>
</ul>
<p>ここで、他のサイトのAPIをAjaxで触りたいとかとなってくると問題になる。<br />
解決策としては、</p>
<ol>
<li>JSONPを使う。</li>
<li>XMLHttpRequest以外で通信する</li>
</ol>
<p>があるけれど、とりあえずここではJSONPについて。</p>
<h3>JSONP(JSON with padding)</h3>
<ul>
<li>HTMLタグのscript#srcにはクロスドメイン制限がないので、それを利用して<strong>クロスドメイン間の通信を実現する手法</strong></li>
<li>予めコールバック関数を定義しておき、パラメーターにコールバックを指定し呼び出してもらう。</li>
</ul>
<p>具体的に書いてみると、<br />
[html]<br />
<script type="text/javascript src="http://crossdomain/json?callback=hoge"></script><br />
<script type="text/javascript">
function hoge(json){
alert(json.data)
}
</script><br />
[/html]<br />
みたいにすること。</p>
<h3>jQueryを用いたJSONPの実装</h3>
<p>でも、結局はjQueryを使うと簡単に出来ちゃうよ、ってお話です。</p>
<p>[javascript]<br />
// $.getJSONでも出来るみたいだけど。<br />
    $.ajax({<br />
        url: &#8220;http://crossdomain/json&#8221;,<br />
        data: {<br />
            hoge: &#8220;hogu&#8221;<br />
        },<br />
        dataType: &#8216;jsonp&#8217;, // これは固定<br />
        callback: &#8216;callbackname&#8217;, // コールバック関数を指定するためのパラメーター名<br />
        success: function(data, status){<br />
            // 何かをする<br />
        }<br />
    });<br />
[/javascript]</p>
<p>jQuery使えば、JSONPのことを知らなくてもクロスドメイン間の通信も実装できちゃいそうだね。</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://thleave.com/coding/318/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Closure Libraryを使ってみた</title>
		<link>http://thleave.com/coding/139</link>
		<comments>http://thleave.com/coding/139#comments</comments>
		<pubDate>Sat, 07 Nov 2009 08:03:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://thleave.com/?p=139</guid>
		<description><![CDATA[公開されたばかりのGoogle製のJavaScriptライブラリをちょっとだけ触ってみた。
GoogleAppsEngineも凄かったけど、
これも並ぶくらいにヤバいんじゃない？って思ってる。
こんなライブラリを自由時間 [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>公開されたばかりのGoogle製のJavaScriptライブラリをちょっとだけ触ってみた。<br />
GoogleAppsEngineも凄かったけど、<br />
これも並ぶくらいにヤバいんじゃない？って思ってる。<br />
こんなライブラリを自由時間に作っちゃって、<br />
ひょいひょい公開するGoogleはホント鳥肌たつ。</p>
<p>Gmailとかもこのライブラリで作られてるんだって。</p>
<p>以下、せっかくなので要点だけまとめてみた。</p>
<p><span id="more-139"></span></p>
<p>英語読める方は<a href="http://code.google.com/intl/ja-JP/closure/library/docs/overview.html">GoogleLabsのドキュメント</a>読んだ方がいいかも。</p>
<p>まず、ソースはSVNから落としてくる。<br />
[code]</p>
<p>http://closure-library.googlecode.com/svn/trunk/</p>
<p>[/code]</p>
<p><br/><br />
HTMLファイルにはbase.jsだけ読み込むだけで良い。<br />
[html]<br />
<script type="text/javascript" src="closure-library/closure/goog/base.js"></script><br />
[/html]</p>
<p><br/><br />
但し、JavaScriptソースにはJavaなどに似た記法で使うソースの宣言が必要。<br />
[javascript]<br />
goog.require(&#8216;goog.dom&#8217;);<br />
[/javascript]</p>
<p><br/><br />
名前空間の概念がある。最上位は&#8221;goog&#8221;である。<br />
jQueryとは異なり、階層構造になっているから注意。（Javaとかに慣れてる人は大丈夫）</p>
<p>また、継承も出来る。詳しくは追々かな。<br />
[javascript]<br />
goog.inherits(goog.ui.MenuButton, goog.ui.Button);<br />
[/javascript]<br />
<br/></p>
<p>jQueryみたいに、独自のイベントハンドラがあるし、ユーザー独自のイベントも作れる。<br />
（ブラウザ毎の差異を吸収できる）<br />
[javascript]<br />
goog.events.listen(this.elHeader_, goog.events.EventType.CLICK, this.onHeaderClick_, false, this);<br />
[/javascript]<br />
ここは、覚えないとダメそう。<br />
<a href="http://code.google.com/intl/ja-JP/closure/library/docs/events_tutorial.html">Event Handling</a></p>
<p>&#8212;</p>
<p>ClosureLibraryはClosureToolsの一部で、<br />
その他にコードを最適化するCompilerなどがあるみたい。<br />
様子見てつかってみたいです</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://thleave.com/coding/139/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavascriptとIE7</title>
		<link>http://thleave.com/coding/132</link>
		<comments>http://thleave.com/coding/132#comments</comments>
		<pubDate>Sun, 25 Oct 2009 18:18:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://thleave.com/?p=132</guid>
		<description><![CDATA[ブラウザによってAタグのhref属性の値が違う。
[html]
link
[/html]
みたいなソースで、
[javascript]
var href = $(&#8220;a#takotako&#8221;).att [...]]]></description>
			<content:encoded><![CDATA[<!-- google_ad_section_start --><p>ブラウザによってAタグのhref属性の値が違う。</p>
<p>[html]<br />
<a href="#kumakuma">link</a><br />
[/html]</p>
<p>みたいなソースで、</p>
<p>[javascript]<br />
var href = $(&#8220;a#takotako&#8221;).attr(&#8220;href&#8221;);<br />
alert(&#8220;href = &#8221; + href);<br />
[/javascript]</p>
<p>JSとかで取得する場面があった。</p>
<ul>
<li>モダンブラウザ(FF, Opera, IE8.etc)<br />
href = &#8220;#kumakuma&#8221;<br />
これが普通だと思うけど。</li>
<li>IE7(IE6もかも？)<br />
href = &#8220;http://thleave.com/#kumakuma&#8221;<br />
ご丁寧に全部出る。</li>
</ul>
<p>これにすげーハマった。<br />
ってきり、JSON（も扱っているのでその）周りかと思ったら全然違う。<br />
みなさん是非、IEはIEでもIE8を使いましょう！</p>
<!-- google_ad_section_end -->]]></content:encoded>
			<wfw:commentRss>http://thleave.com/coding/132/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
