<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://www40.atwiki.jp/spellbound/">
    <title>ActionScript入門Wiki</title>
    <link>http://www40.atwiki.jp/spellbound/</link>
    <description>ActionScript入門Wiki</description>

    <dc:language>ja</dc:language>
    <dc:date>2012-05-27T17:36:41+09:00</dc:date>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://www40.atwiki.jp/spellbound/pages/1899.html" />
                <rdf:li rdf:resource="http://www40.atwiki.jp/spellbound/pages/1898.html" />
                <rdf:li rdf:resource="http://www40.atwiki.jp/spellbound/pages/1897.html" />
                <rdf:li rdf:resource="http://www40.atwiki.jp/spellbound/pages/1896.html" />
                <rdf:li rdf:resource="http://www40.atwiki.jp/spellbound/pages/1895.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="http://www40.atwiki.jp/spellbound/pages/1899.html">
    <title>Canvas - 図形の描画</title>
    <link>http://www40.atwiki.jp/spellbound/pages/1899.html</link>
    <description>
      <![CDATA[<!--@@@@@-->
<blockquote><!--@@@@@--><div>
<a href="http://www40.atwiki.jp/spellbound/"  >トップページ</a> &gt; <a href="http://www40.atwiki.jp/spellbound/pages/1779.html"    title="JavaScript (123d)">JavaScript</a> &gt; <a href="http://www40.atwiki.jp/spellbound/pages/1898.html"    title="Canvas (18h)">Canvas</a> &gt; 
Canvas - 図形の描画

</div></blockquote>

<br />

<div class="plugin_contents"><!--@@@@@--><ul><li><a href="http://www40.atwiki.jp/spellbound/pages/1899.html#id_fe62d4b7">矩形の描画</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1899.html#id_098e4f87">線の描画</a><ul><li><a href="http://www40.atwiki.jp/spellbound/pages/1899.html#id_20a10b1e">lineWidth</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1899.html#id_6c204bf2">lineCap</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1899.html#id_e0794330">lineJoin</a></li></ul></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1899.html#id_58eb979e">弧の描画</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1899.html#id_7199d8fb">ベジェ曲線</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1899.html#id_d2b8f2a1">マスク処理</a></li></ul></div>

<hr />
<br />
<h4 id="id_fe62d4b7">矩形の描画</h4>
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> context = canvas.<span style="color: #006600;">getContext</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;2d&quot;</span><span style="color: #66cc66;">&#41;</span>;
context.<span style="color: #006600;">fillStyle</span> = <span style="color: #3366CC;">&quot;#000000&quot;</span>;
context.<span style="color: #006600;">fillRect</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
context.<span style="color: #006600;">strokeRect</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">250</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
context.<span style="color: #006600;">fillRect</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">400</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span><span style="color: #66cc66;">&#41;</span>;
context.<span style="color: #006600;">clearRect</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">420</span>, <span style="color: #CC0000;">120</span>, <span style="color: #CC0000;">60</span>, <span style="color: #CC0000;">60</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></div>
<div style=""><img border="0"   style="" title="" alt="" src="http://www40.atwiki.jp/spellbound/?plugin=ref&amp;serial=2569" /></div>
<ul><li>fillRect(x, y, width, height)</li></ul>
<div>
(x, y)～(x + width, y + height)の矩形領域を塗りつぶす。

</div>
<ul><li>strokeRect(x, y, width, height)</li></ul>
<div>
(x, y)～(x + width, y + height)の矩形の輪郭だけを描画。

</div>
<ul><li>clearRect(x, y, width, height)</li></ul>
<div>
(x, y)～(x + width, y + height)の矩形領域を透明色で塗りつぶす。

</div>
<br />
<br />
<h4 id="id_098e4f87">線の描画</h4>
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> context = canvas.<span style="color: #006600;">getContext</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;2d&quot;</span><span style="color: #66cc66;">&#41;</span>;
context.<span style="color: #006600;">strokeStyle</span> = <span style="color: #3366CC;">&quot;#000000&quot;</span>; <span style="color: #009900; font-style: italic;">// 線の色</span>
context.<span style="color: #006600;">lineWidth</span> = <span style="color: #CC0000;">10</span>; <span style="color: #009900; font-style: italic;">// 線の太さ</span>
context.<span style="color: #006600;">lineCap</span> = <span style="color: #3366CC;">&quot;round&quot;</span>; <span style="color: #009900; font-style: italic;">// 線の端の形状</span>
context.<span style="color: #006600;">beginPath</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// パスの開始</span>
context.<span style="color: #006600;">moveTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// (100, 100)まで移動</span>
context.<span style="color: #006600;">lineTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">200</span>, <span style="color: #CC0000;">100</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// (100, 100)～(200, 100)までパスを繋ぐ</span>
context.<span style="color: #006600;">lineTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">200</span>, <span style="color: #CC0000;">200</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// (200, 100)～(200, 200)までパスを繋ぐ</span>
context.<span style="color: #006600;">stroke</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// パス情報を基に線を描画</span>
&nbsp;</pre></div>
<div style=""><img border="0"   style="" title="" alt="" src="http://www40.atwiki.jp/spellbound/?plugin=ref&amp;serial=2570" /></div>
<br />
<h5 id="id_20a10b1e">lineWidth</h5>
<div>
線の太さを指定する。デフォルト値は1。

</div>
<br />
<h5 id="id_6c204bf2">lineCap</h5>
<div>
線の端の形状を決めるためのプロパティ

</div>
<ul><li>butt</li></ul>
<div>
デフォルト値。終端部分が四角形になる。

</div>
<ul><li>round</li></ul>
<div>
終端部分が丸くなる

</div>
<ul><li>square</li></ul>
<div>
終端部分が四角形になる。buttより、線幅の半分の長さだけ両方向に長くなる。

</div>
<br />
<h5 id="id_e0794330">lineJoin</h5>
<div>
線と線が繋がる接続点の形を設定する。

</div>
<br />
<ul><li>miter</li></ul>
<div>
デフォルト値。尖った角が出来る。

</div>
<ul><li>bevel</li></ul>
<div>
尖った角の先端を切り取った形。

</div>
<ul><li>round</li></ul>
<div>
角が丸くなる。

</div>
<br />
<br />
<h4 id="id_58eb979e">弧の描画</h4>
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> context = canvas.<span style="color: #006600;">getContext</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;2d&quot;</span><span style="color: #66cc66;">&#41;</span>;
context.<span style="color: #006600;">fillStyle</span> = <span style="color: #3366CC;">&quot;#ed1a3d&quot;</span>; <span style="color: #009900; font-style: italic;">// 塗りつぶし色</span>
context.<span style="color: #006600;">strokeStyle</span> = <span style="color: #3366CC;">&quot;#000000&quot;</span>; <span style="color: #009900; font-style: italic;">// 線の色</span>
context.<span style="color: #006600;">lineWidth</span> = <span style="color: #CC0000;">5</span>; <span style="color: #009900; font-style: italic;">// 線の太さ</span>
<span style="color: #009900; font-style: italic;">// 円の中心が(100, 100)、半径が50, 0度～270度まで時計回りに弧のパスを作る</span>
context.<span style="color: #006600;">arc</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">50</span>, <span style="color: #CC0000;">0</span>, Math.<span style="color: #006600;">PI</span> * <span style="color: #CC0000;">1.5</span>, <span style="color: #003366; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
context.<span style="color: #006600;">stroke</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// 輪郭を描画</span>
context.<span style="color: #006600;">fill</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// 塗りつぶし描画</span>
&nbsp;</pre></div>
<div style=""><img border="0"   style="" title="" alt="" src="http://www40.atwiki.jp/spellbound/?plugin=ref&amp;serial=2571" /></div>
<ul><li>arc(x, y, radius, startAngle, endAngle, anticlockwise)</li></ul>
<div>
円の中心が(x, y)、半径がradius、startAngleラジアン～endAngleラジアンまでanticlockwise回りに弧のパスを作成する。
<br />
(anticlockwise -&gt; true:反時計回り, false:時計回り)

</div>
<br />
<br />
<h4 id="id_7199d8fb">ベジェ曲線</h4>
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> context = canvas.<span style="color: #006600;">getContext</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;2d&quot;</span><span style="color: #66cc66;">&#41;</span>;
context.<span style="color: #006600;">strokeStyle</span> = <span style="color: #3366CC;">&quot;#000000&quot;</span>; <span style="color: #009900; font-style: italic;">// 線の色</span>
context.<span style="color: #006600;">lineWidth</span> = <span style="color: #CC0000;">5</span>; <span style="color: #009900; font-style: italic;">// 線の太さ</span>
context.<span style="color: #006600;">moveTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #009900; font-style: italic;">// 二次ベジェ曲線</span>
context.<span style="color: #006600;">quadraticCurveTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">200</span>, <span style="color: #CC0000;">150</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">200</span><span style="color: #66cc66;">&#41;</span>;
context.<span style="color: #006600;">moveTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #009900; font-style: italic;">// 三次ベジェ曲線</span>
context.<span style="color: #006600;">bezierCurveTo</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">300</span>, <span style="color: #CC0000;">130</span>, <span style="color: #CC0000;">300</span>, <span style="color: #CC0000;">170</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">200</span><span style="color: #66cc66;">&#41;</span>;
context.<span style="color: #006600;">stroke</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></div>
<div style=""><img border="0"   style="" title="" alt="" src="http://www40.atwiki.jp/spellbound/?plugin=ref&amp;serial=2572" /></div>
<ul><li>quadraticCurveTo(cpx, cpy, x, y)</li></ul>
<div>
現在位置を開始地点、(cpx, cpy)を制御点、(x, y)を終点とする二次ベジェ曲線のパスを作成する。

</div>
<ul><li>bezierCurveTo(cpx0, cpy0, cpx1, cpy1, x, y)</li></ul>
<div>
現在位置を開始地点、(cpx0, cpy0)を制御点1、 (cpx1, cpy1)を制御点2、(x, y)を終点とする三次ベジェ曲線のパスを作成する。

</div>
<br />
<div>
ベジェ曲線のアルゴリズムについては、
<br />
<a href="http://www40.atwiki.jp/spellbound/pages/658.html"    title="curveToで曲線を描く (754d)">curveToで曲線を描く</a>
<br />
<a href="http://www40.atwiki.jp/spellbound/pages/1423.html"    title="ベジェ曲線を描く (406d)">ベジェ曲線を描く</a>
<br />
を参照してください。

</div>
<br />
<br />
<h4 id="id_d2b8f2a1">マスク処理</h4>
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> context = canvas.<span style="color: #006600;">getContext</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;2d&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #009900; font-style: italic;">// 円形のマスク作成</span>
context.<span style="color: #006600;">arc</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">150</span>, <span style="color: #CC0000;">150</span>, <span style="color: #CC0000;">50</span>, <span style="color: #CC0000;">0</span>, Math.<span style="color: #006600;">PI</span> * <span style="color: #CC0000;">2</span>, <span style="color: #003366; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
context.<span style="color: #006600;">clip</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #009900; font-style: italic;">// 矩形を描画しているが、マスクがかかっているので赤い円だけが表示される</span>
context.<span style="color: #006600;">fillStyle</span> = <span style="color: #3366CC;">&quot;#ED1A3D&quot;</span>;
context.<span style="color: #006600;">fillRect</span><span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></div>
<div style=""><img border="0"   style="" title="" alt="" src="http://www40.atwiki.jp/spellbound/?plugin=ref&amp;serial=2573" /></div>
<div>
fillRect()やarc()などで図形のパスを作成しておき、その後にclip()を呼び出すと、図形のパス部分だけが描画対象になるマスクを作成することが出来る。
</div>]]>    </description>
    <dc:date>2012-05-27T17:36:41+09:00</dc:date>
  </item>
    <item rdf:about="http://www40.atwiki.jp/spellbound/pages/1898.html">
    <title>Canvas</title>
    <link>http://www40.atwiki.jp/spellbound/pages/1898.html</link>
    <description>
      <![CDATA[<!--@@@@@-->
<blockquote><!--@@@@@--><div>
<a href="http://www40.atwiki.jp/spellbound/"  >トップページ</a> &gt; <a href="http://www40.atwiki.jp/spellbound/pages/1779.html"    title="JavaScript (123d)">JavaScript</a> &gt; 
Canvas

</div></blockquote>

<br />
<div>
<a href="http://www40.atwiki.jp/spellbound/pages/1897.html"    title="Canvas - Canvasの利用方法 (18h)">Canvas - Canvasの利用方法</a>
<br />
<a href="http://www40.atwiki.jp/spellbound/pages/1899.html"    title="Canvas - 図形の描画 (4h)">Canvas - 図形の描画</a>
</div>]]>    </description>
    <dc:date>2012-05-27T03:22:04+09:00</dc:date>
  </item>
    <item rdf:about="http://www40.atwiki.jp/spellbound/pages/1897.html">
    <title>Canvas - Canvasの利用方法</title>
    <link>http://www40.atwiki.jp/spellbound/pages/1897.html</link>
    <description>
      <![CDATA[<!--@@@@@-->
<blockquote><!--@@@@@--><div>
<a href="http://www40.atwiki.jp/spellbound/"  >トップページ</a> &gt; <a href="http://www40.atwiki.jp/spellbound/pages/1779.html"    title="JavaScript (123d)">JavaScript</a> &gt; <a href="http://www40.atwiki.jp/spellbound/pages/1898.html"    title="Canvas (18h)">Canvas</a> &gt; 
Canvas - Canvasの利用方法

</div></blockquote>

<br />

<div class="plugin_contents"><!--@@@@@--><ul><li><a href="http://www40.atwiki.jp/spellbound/pages/1897.html#id_e6d49b96">Canvasを配置するHTML</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1897.html#id_b00c1f23">JavaScriptでcanvas要素を取得する</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1897.html#id_5e6121e2">ブラウザがCanvasをサポートしているかを調べる</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1897.html#id_ff717b2d">2Dコンテキストを取得する</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1897.html#id_0b441b9b">Hello, World!!</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1897.html#id_0e18d038">検証用コード</a><ul><li><a href="http://www40.atwiki.jp/spellbound/pages/1897.html#id_8556d9f5">html</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1897.html#id_c9749021">JavaScript</a></li></ul></li></ul></div>

<hr />
<br />
<h4 id="id_e6d49b96">Canvasを配置するHTML</h4>
<div class="plugin_highlight"><pre class="html4strict"><span style="color: #00bbdd;">&lt;!DOCTYPE html&gt;</span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">&lt;html</span></a> <span style="color: #000066;">lang</span>=<span style="color: #ff0000;">&quot;ja&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold;">&lt;head&gt;</span></a></span>
        <span style="color: #009900;"><a href="http://december.com/html/4/element/meta.html"><span style="color: #000000; font-weight: bold;">&lt;meta</span></a> charaset=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/head&gt;</span></span>
    <span style="color: #009900;"><a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">&lt;body&gt;</span></a></span>
        <span style="color: #009900;">&lt;canvas <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;canvas&quot;</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;500&quot;</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">&quot;500&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            Canvasに対応していないブラウザに対するメッセージ
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span>/canvas&gt;</span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/body&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/html&gt;</span></span>
&nbsp;</pre></div>
<div>
Canvasで描画したものを表示するためにcanvasタグを配置する。
<br />
width, heightで幅、高さを指定。

</div>
<br />
<br />
<h4 id="id_b00c1f23">JavaScriptでcanvas要素を取得する</h4>
<div class="plugin_highlight"><pre class="javascript">window.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;load&quot;</span>, <span style="color: #000066;">onLoad</span>, <span style="color: #003366; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> <span style="color: #000066;">onLoad</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    drawCanvas<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> drawCanvas<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
   <span style="color: #003366; font-weight: bold;">var</span> canvas = document.<span style="color: #006600;">getElementById</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;canvas&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre></div>
<div>
canvas要素に付けたidをもとに要素を取得する。

</div>
<br />
<br />
<h4 id="id_5e6121e2">ブラウザがCanvasをサポートしているかを調べる</h4>
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> canvas = document.<span style="color: #006600;">getElementById</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;canvas&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>!canvas || !canvas.<span style="color: #006600;">getContext</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre></div>
<div>
canvas要素を取得できていない、またはcanvas.getContext関数が存在しないならばreturnで処理を中断させる。

</div>
<br />
<br />
<h4 id="id_ff717b2d">2Dコンテキストを取得する</h4>
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> context = canvas.<span style="color: #006600;">getContext</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;2d&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></div>
<div>
2D描画を行うためのコンテキストを取得。

</div>
<br />
<br />
<h4 id="id_0b441b9b">Hello, World!!</h4>
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> context = canvas.<span style="color: #006600;">getContext</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;2d&quot;</span><span style="color: #66cc66;">&#41;</span>;
context.<span style="color: #006600;">fillStyle</span> = <span style="color: #3366CC;">&quot;#000000&quot;</span>; <span style="color: #009900; font-style: italic;">// 色</span>
context.<span style="color: #006600;">font</span> = <span style="color: #3366CC;">&quot;20px Helvetica&quot;</span>; <span style="color: #009900; font-style: italic;">// サイズ フォント名</span>
context.<span style="color: #006600;">fillText</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;Hello World!!&quot;</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// 表示する文字列, x, y</span>
&nbsp;</pre></div>
<br />
<br />
<h4 id="id_0e18d038">検証用コード</h4>
<h5 id="id_8556d9f5">html</h5>
<div class="plugin_highlight"><pre class="html4strict"><span style="color: #00bbdd;">&lt;!DOCTYPE html&gt;</span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">&lt;html</span></a> <span style="color: #000066;">lang</span>=<span style="color: #ff0000;">&quot;ja&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><a href="http://december.com/html/4/element/head.html"><span style="color: #000000; font-weight: bold;">&lt;head&gt;</span></a></span>
        <span style="color: #009900;"><a href="http://december.com/html/4/element/meta.html"><span style="color: #000000; font-weight: bold;">&lt;meta</span></a> charaset=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/head&gt;</span></span>
    <span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;canvas.js&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span>
    <span style="color: #009900;"><a href="http://december.com/html/4/element/body.html"><span style="color: #000000; font-weight: bold;">&lt;body&gt;</span></a></span>
        <span style="color: #009900;">&lt;canvas <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;canvas&quot;</span> <span style="color: #000066;">width</span>=<span style="color: #ff0000;">&quot;500&quot;</span> <span style="color: #000066;">height</span>=<span style="color: #ff0000;">&quot;500&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
            Canvasに対応していないブラウザに対するメッセージ
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span>/canvas&gt;</span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/body&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/html&gt;</span></span>
&nbsp;</pre></div>
<br />
<h5 id="id_c9749021">JavaScript</h5>
<div class="plugin_highlight"><pre class="javascript">window.<span style="color: #006600;">addEventListener</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;load&quot;</span>, <span style="color: #000066;">onLoad</span>, <span style="color: #003366; font-weight: bold;">false</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> <span style="color: #000066;">onLoad</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    drawCanvas<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> drawCanvas<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #003366; font-weight: bold;">var</span> canvas = document.<span style="color: #006600;">getElementById</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;canvas&quot;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>!canvas || !canvas.<span style="color: #006600;">getContext</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">return</span>;
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    <span style="color: #003366; font-weight: bold;">var</span> context = canvas.<span style="color: #006600;">getContext</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;2d&quot;</span><span style="color: #66cc66;">&#41;</span>;
    context.<span style="color: #006600;">fillStyle</span> = <span style="color: #3366CC;">&quot;#000000&quot;</span>;
    context.<span style="color: #006600;">font</span> = <span style="color: #3366CC;">&quot;20px Helvetica&quot;</span>;
    context.<span style="color: #006600;">fillText</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;Hello World!!&quot;</span>, <span style="color: #CC0000;">100</span>, <span style="color: #CC0000;">100</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre></div>]]>    </description>
    <dc:date>2012-05-27T03:21:19+09:00</dc:date>
  </item>
    <item rdf:about="http://www40.atwiki.jp/spellbound/pages/1896.html">
    <title>JavaScript - Ajax</title>
    <link>http://www40.atwiki.jp/spellbound/pages/1896.html</link>
    <description>
      <![CDATA[<!--@@@@@-->
<blockquote><!--@@@@@--><div>
<a href="http://www40.atwiki.jp/spellbound/"  >トップページ</a> &gt; <a href="http://www40.atwiki.jp/spellbound/pages/1779.html"    title="JavaScript (123d)">JavaScript</a> &gt; <a href="http://www40.atwiki.jp/spellbound/pages/1888.html"    title="クライアントサイドJavaScript (11d)">クライアントサイドJavaScript</a> &gt; 
JavaScript - Ajax

</div></blockquote>

<br />

<div class="plugin_contents"><!--@@@@@--><ul><li><a href="http://www40.atwiki.jp/spellbound/pages/1896.html#id_af91ac5d">Ajax</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1896.html#id_e80d008c">XMLHttpRequest</a><ul><li><a href="http://www40.atwiki.jp/spellbound/pages/1896.html#id_cf7743d7">onreadystate</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1896.html#id_8d254034">open()</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1896.html#id_fc84def7">responseText</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1896.html#id_69b756b5">レスポンスデータをXMLとして受け取る</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1896.html#id_62aba9f2">レスポンスデータをJSONとして受け取る</a></li></ul></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1896.html#id_cc661111">同一生成元ポリシー</a><ul><li><a href="http://www40.atwiki.jp/spellbound/pages/1896.html#id_838b273c">JSONP</a></li></ul></li></ul></div>

<hr />
<br />
<h4 id="id_af91ac5d">Ajax</h4>
<div>
AjaxはAsynchronous JavaScript + XMLの略で、画面を遷移せずサーバからデータをロードし、ページを書き換える技術。

</div>
<br />
<br />
<h4 id="id_e80d008c">XMLHttpRequest</h4>
<div>
JavaScriptからサーバに対して動的にリクエストを送信するにはXMLHttpRequestを使用する。

</div>
<br />
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> xhr = <span style="color: #003366; font-weight: bold;">new</span> XMLHttpRequest<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #009900; font-style: italic;">// 状態のイベントハンドラを記述する</span>
xhr.<span style="color: #006600;">onreadystatechange</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #009900; font-style: italic;">// サーバからのレスポンス受信完了</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>xhr.<span style="color: #006600;">readyState</span> == <span style="color: #CC0000;">4</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
        <span style="color: #009900; font-style: italic;">// 通信が正常に完了している</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>xhr.<span style="color: #000066;">status</span> == <span style="color: #CC0000;">200</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #009900; font-style: italic;">// サーバからのレスポンステキストを表示</span>
            <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span>xhr.<span style="color: #006600;">responseText</span><span style="color: #66cc66;">&#41;</span>;
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #009900; font-style: italic;">// GET形式で第二引数のURLにアクセス</span>
xhr.<span style="color: #000066;">open</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;GET&quot;</span>, <span style="color: #3366CC;">&quot;./test.php&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #009900; font-style: italic;">//　実際にサーバにリクエストを送信する</span>
xhr.<span style="color: #006600;">send</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></div>
<br />
<h5 id="id_cf7743d7">onreadystate</h5>
<div>
onreadystateはXMLHttpRequestオブジェクトの状態が変化した際に呼ばれる。
<br />
各状態の値はreadyStateプロパティで取得し、値が4になればサーバからのレスポンスを受信し終えたという意味になる。

</div>
<br />
<table>
<tr class="atwiki_tr_odd atwiki_tr_1" >		<!--0-0--><td style="">0</td>
		<!--0-1--><td style="">open()が呼び出されていない</td></tr>
<tr class="atwiki_tr_even atwiki_tr_2" >		<!--1-0--><td style="">1</td>
		<!--1-1--><td style="">send()が呼び出されていない</td></tr>
<tr class="atwiki_tr_odd atwiki_tr_3" >		<!--2-0--><td style="">2</td>
		<!--2-1--><td style="">サーバからレスポンスが返されていない</td></tr>
<tr class="atwiki_tr_even atwiki_tr_4" >		<!--3-0--><td style="">3</td>
		<!--3-1--><td style="">サーバからレスポンスを受信中</td></tr>
<tr class="atwiki_tr_odd atwiki_tr_5" >		<!--4-0--><td style="">4</td>
		<!--4-1--><td style="">サーバからのレスポンスを受信完了</td></tr>
</table>
<br />
<h5 id="id_8d254034">open()</h5>
<ul><li>open(&quot;method&quot;, &quot;URL&quot;[, asyncFlag[, &quot;userName&quot;[, &quot;password&quot;]]])</li></ul>
<table>
<tr class="atwiki_tr_odd atwiki_tr_1" >		<!--0-0--><td style="">第一引数</td>
		<!--0-1--><td style="">method</td>
		<!--0-2--><td style="">HTTPメソッドの指定。&quot;GET&quot;もしくは&quot;POST&quot;を指定する</td></tr>
<tr class="atwiki_tr_even atwiki_tr_2" >		<!--1-0--><td style="">第二引数</td>
		<!--1-1--><td style="">URL</td>
		<!--1-2--><td style="">通信先サーバのURL</td></tr>
<tr class="atwiki_tr_odd atwiki_tr_3" >		<!--2-0--><td style="">第三引数</td>
		<!--2-1--><td style="">asyncFlag</td>
		<!--2-2--><td style="">trueなら同期処理、falseなら非同期処理を行う</td></tr>
<tr class="atwiki_tr_even atwiki_tr_4" >		<!--3-0--><td style="">第四引数</td>
		<!--3-1--><td style="">userName</td>
		<!--3-2--><td style="">サーバで認証が必要な場合のユーザー名</td></tr>
<tr class="atwiki_tr_odd atwiki_tr_5" >		<!--4-0--><td style="">第五引数</td>
		<!--4-1--><td style="">password</td>
		<!--4-2--><td style="">サーバで認証が必要な場合のパスワード</td></tr>
</table>
<br />
<h5 id="id_fc84def7">responseText</h5>
<div>
サーバからのレスポンスは、responseTextプロパティで取得が出来る。

</div>
<br />
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> xhr = <span style="color: #003366; font-weight: bold;">new</span> XMLHttpRequest<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
xhr.<span style="color: #006600;">onreadystatechange</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>xhr.<span style="color: #006600;">readyState</span> == <span style="color: #CC0000;">4</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>xhr.<span style="color: #000066;">status</span> == <span style="color: #CC0000;">200</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #009900; font-style: italic;">// load.htmlのbody以下をこちらのbodyに追加</span>
            document.<span style="color: #006600;">body</span>.<span style="color: #006600;">innerHTML</span> = xhr.<span style="color: #006600;">responseText</span>;
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #009900; font-style: italic;">// load.htmlを読み込む</span>
xhr.<span style="color: #000066;">open</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;GET&quot;</span>, <span style="color: #3366CC;">&quot;./load.html&quot;</span><span style="color: #66cc66;">&#41;</span>;
xhr.<span style="color: #006600;">send</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></div>
<div>
サーバからのレスポンスがhtmlの場合、responseTextでbody以下の内容を取得できる。

</div>
<br />
<h5 id="id_69b756b5">レスポンスデータをXMLとして受け取る</h5>
<div class="plugin_highlight"><pre class="xml"><span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;root<span style="font-weight: bold; color: black;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;id<span style="font-weight: bold; color: black;">&gt;</span></span></span>99<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/id<span style="font-weight: bold; color: black;">&gt;</span></span></span>
<span style="color: #009900;"><span style="font-weight: bold; color: black;">&lt;/root<span style="font-weight: bold; color: black;">&gt;</span></span></span>
&nbsp;</pre></div>
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> xhr = <span style="color: #003366; font-weight: bold;">new</span> XMLHttpRequest<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
xhr.<span style="color: #006600;">onreadystatechange</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>xhr.<span style="color: #006600;">readyState</span> == <span style="color: #CC0000;">4</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>xhr.<span style="color: #000066;">status</span> == <span style="color: #CC0000;">200</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #003366; font-weight: bold;">var</span> xml = xhr.<span style="color: #006600;">responseXML</span>; <span style="color: #009900; font-style: italic;">// レスポンスデータをXMLとして取得</span>
            <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span>xml.<span style="color: #006600;">getElementsByTagName</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;id&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">firstChild</span>.<span style="color: #006600;">nodeValue</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">// 99</span>
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #009900; font-style: italic;">// load.xmlを読み込む</span>
xhr.<span style="color: #000066;">open</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;GET&quot;</span>, <span style="color: #3366CC;">&quot;./load.xml&quot;</span><span style="color: #66cc66;">&#41;</span>;
xhr.<span style="color: #006600;">send</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></div>
<br />
<h5 id="id_62aba9f2">レスポンスデータをJSONとして受け取る</h5>
<div class="plugin_highlight"><pre class="javascript"><span style="color: #66cc66;">&#123;</span>
    <span style="color: #3366CC;">&quot;id&quot;</span>:<span style="color: #CC0000;">100</span>,
    <span style="color: #3366CC;">&quot;name&quot;</span>:<span style="color: #3366CC;">&quot;JavaScript&quot;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre></div>
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> xhr = <span style="color: #003366; font-weight: bold;">new</span> XMLHttpRequest<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
xhr.<span style="color: #006600;">onreadystatechange</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>xhr.<span style="color: #006600;">readyState</span> == <span style="color: #CC0000;">4</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #66cc66;">&#40;</span>xhr.<span style="color: #000066;">status</span> == <span style="color: #CC0000;">200</span><span style="color: #66cc66;">&#41;</span>
        <span style="color: #66cc66;">&#123;</span>
            <span style="color: #009900; font-style: italic;">// レスポンスデータをJSON形式に変換</span>
            <span style="color: #003366; font-weight: bold;">var</span> json = JSON.<span style="color: #006600;">parse</span><span style="color: #66cc66;">&#40;</span>xhr.<span style="color: #006600;">responseText</span><span style="color: #66cc66;">&#41;</span>;
            <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span>json.<span style="color: #006600;">id</span><span style="color: #66cc66;">&#41;</span>;     <span style="color: #009900; font-style: italic;">// 100</span>
            <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span>json.<span style="color: #000066;">name</span><span style="color: #66cc66;">&#41;</span>;   <span style="color: #009900; font-style: italic;">// JavaScript</span>
        <span style="color: #66cc66;">&#125;</span>
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #009900; font-style: italic;">// load.htmlを読み込む</span>
xhr.<span style="color: #000066;">open</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;GET&quot;</span>, <span style="color: #3366CC;">&quot;./json_data&quot;</span><span style="color: #66cc66;">&#41;</span>;
xhr.<span style="color: #006600;">send</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></div>
<br />
<br />
<h4 id="id_cc661111">同一生成元ポリシー</h4>
<div>
XMLHttpRequestは同一生成元ポリシーという制約によって、通信を行うデータ先が限定される。
<br />
具体的には、

</div>
<ul><li>プロトコル(http, https等)</li>
<li>ポート番号</li>
<li>ホスト</li></ul>
<div>
が一致していないと、そのサーバと通信を行うことが出来ない。

</div>
<br />
<div>
同一生成元ポリシーの制約によって、別ドメインとの通信が出来なくなるが、下記の方法で別ドメインとの通信を行うことが出来る。

</div>
<br />
<h5 id="id_838b273c">JSONP</h5>
<div>
scriptタグのsrc属性に別ドメインのURL(jsファイル)を指定すると、同一生成元ポリシーの制約関係なしにURL内のコードを実行することが出来る。

</div>
<br />
<div class="plugin_highlight"><pre class="javascript">callback<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></div>
<div>
例えば、上記のように関数を実行すると、グローバル領域に存在するcallback関数が実行されることになる。

</div>
<br />
<br />
<div class="plugin_highlight"><pre class="javascript"><span style="color: #003366; font-weight: bold;">function</span> callback<span style="color: #66cc66;">&#40;</span>arguments<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    console.<span style="color: #006600;">log</span><span style="color: #66cc66;">&#40;</span>arguments<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #009900; font-style: italic;">// 動的にscriptタグを配置、srcにURLを入れて、URL内のJavaScriptを実行する</span>
<span style="color: #003366; font-weight: bold;">var</span> script = document.<span style="color: #006600;">createElement</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;script&quot;</span><span style="color: #66cc66;">&#41;</span>;
script.<span style="color: #006600;">src</span> = <span style="color: #3366CC;">&quot;http://3kyo.sakura.ne.jp/3kyotest/jsonp_test&quot;</span>;
document.<span style="color: #006600;">getElementsByTagName</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;head&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#91;</span><span style="color: #CC0000;">0</span><span style="color: #66cc66;">&#93;</span>.<span style="color: #006600;">appendChild</span><span style="color: #66cc66;">&#40;</span>script<span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></div>
<div>
なので、前もってcallback関数を定義しておき、src属性に指定するURL内のコードからcallback関数を呼び出し、引数に必要なデータを指定すれば、別ドメインからデータを受け取る事が出来る。

</div>
<br />
<br />
<div class="plugin_highlight"><pre class="javascript">callback<span style="color: #66cc66;">&#40;</span> <span style="color: #66cc66;">&#123;</span>a:<span style="color: #CC0000;">100</span>, b:<span style="color: #CC0000;">200</span><span style="color: #66cc66;">&#125;</span> <span style="color: #66cc66;">&#41;</span>;
&nbsp;</pre></div>
<div>
特に、引数にJSONデータを渡してクロスドメイン通信を行う仕組みをJSONPと呼ぶ。
</div>]]>    </description>
    <dc:date>2012-05-24T18:34:46+09:00</dc:date>
  </item>
    <item rdf:about="http://www40.atwiki.jp/spellbound/pages/1895.html">
    <title>JavaScript - 座標</title>
    <link>http://www40.atwiki.jp/spellbound/pages/1895.html</link>
    <description>
      <![CDATA[<!--@@@@@-->
<blockquote><!--@@@@@--><div>
<a href="http://www40.atwiki.jp/spellbound/"  >トップページ</a> &gt; <a href="http://www40.atwiki.jp/spellbound/pages/1779.html"    title="JavaScript (123d)">JavaScript</a> &gt; <a href="http://www40.atwiki.jp/spellbound/pages/1888.html"    title="クライアントサイドJavaScript (11d)">クライアントサイドJavaScript</a> &gt; 
JavaScript - 座標

</div></blockquote>

<br />

<div class="plugin_contents"><!--@@@@@--><ul><li><a href="http://www40.atwiki.jp/spellbound/pages/1895.html#id_3677b303">スクリーン座標</a></li>
<li><a href="http://www40.atwiki.jp/spellbound/pages/1895.html#id_61b77374">ウィンドウ座標</a></li></ul></div>

<hr />
<br />
<h4 id="id_3677b303">スクリーン座標</h4>
<div class="plugin_highlight"><pre class="javascript">document.<span style="color: #006600;">onclick</span> = <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span>event<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;screen(&quot;</span> + event.<span style="color: #006600;">screenX</span> + <span style="color: #3366CC;">&quot;, &quot;</span> + event.<span style="color: #006600;">screenY</span> + <span style="color: #3366CC;">&quot;)&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre></div>
<div>
コンピュータのディスプレイの左上を原点とする座標系。

</div>
<br />
<br />
<h4 id="id_61b77374">ウィンドウ座標</h4>
<div class="plugin_highlight"><pre class="javascript">document.<span style="color: #006600;">onclick</span> = <span style="color: #003366; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span>event<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;client(&quot;</span> + event.<span style="color: #006600;">clientX</span> + <span style="color: #3366CC;">&quot;, &quot;</span> + event.<span style="color: #006600;">clientY</span> + <span style="color: #3366CC;">&quot;)&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre></div>
<div>
ブラウザの表示領域の左上を原点とする座標系。
</div>]]>    </description>
    <dc:date>2012-05-21T01:05:41+09:00</dc:date>
  </item>
  </rdf:RDF>

