<?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>Like@Lunatic Blog &#187; JavaScript</title>
	<atom:link href="http://likealunatic.jp/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://likealunatic.jp</link>
	<description>マークアップエンジニア Naoki Sekiguchi のブログ</description>
	<lastBuildDate>Tue, 07 Sep 2010 06:48:06 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>JSONがinvalidでもjQuery.getJSON()はエラーを吐かない</title>
		<link>http://likealunatic.jp/2010/05/getjson.php</link>
		<comments>http://likealunatic.jp/2010/05/getjson.php#comments</comments>
		<pubDate>Fri, 21 May 2010 05:51:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[json]]></category>

		<guid isPermaLink="false">http://likealunatic.jp/?p=681</guid>
		<description><![CDATA[記事のタイトルで言いたいことは言い切っちゃているんですけれども。 jQuery 1.4.2 の $.getJSON() 、もしくは $.ajax() でリクエストしたJSONファイルがinvalidだった場合、エラーは吐きませんがコールバック関数が実行されません。 [jQuery] getJSON callback not firing? - jQuery Forum なんでinvalidなのかと調べたところ・・・、JSONでは文字列は必ずダブルクォートで囲まないといけないことが判りました。シングルクォートではダメです。それからオブジェクトリテラルの左のオペランドにも、ダブルクォート省略不可！あー、なんか初歩的なところでつまづいています。 A string is a collection of zero or more Unicode characters, wrapped in double quotes, using backslash escapes. http://json.org/ 何しろエラーが出ないので、何が悪いのかわかりにくいです＞＜ これで2時間はハマってしまった・・・。。]]></description>
			<content:encoded><![CDATA[<p>記事のタイトルで言いたいことは言い切っちゃているんですけれども。<br />
jQuery 1.4.2 の <a href="http://api.jquery.com/jQuery.getJSON/">$.getJSON()</a> 、もしくは <a href="http://api.jquery.com/jQuery.ajax/">$.ajax()</a> でリクエストしたJSONファイルがinvalidだった場合、エラーは吐きませんが<strong>コールバック関数が実行されません</strong>。</p>

<p class="ref"><a href="http://forum.jquery.com/topic/jquery-getjson-callback-not-firing-12-1-2010">[jQuery] getJSON callback not firing? - jQuery Forum</a></p>

<p>なんでinvalidなのかと調べたところ・・・、JSONでは文字列は必ずダブルクォートで囲まないといけないことが判りました。シングルクォートではダメです。それからオブジェクトリテラルの左のオペランドにも、ダブルクォート省略不可！あー、なんか初歩的なところでつまづいています。</p>
<blockquote cite="http://json.org/">
<p>A string is a collection of zero or more Unicode characters, wrapped in double quotes, using backslash escapes. </p>
<p class="site"><a href="http://json.org/">http://json.org/</a></p>
</blockquote>

<p>何しろエラーが出ないので、何が悪いのかわかりにくいです＞＜ これで2時間はハマってしまった・・・。。</p>]]></content:encoded>
			<wfw:commentRss>http://likealunatic.jp/2010/05/getjson.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhoneのiPodアプリ風見出しインターフェースをJSで作ってみた</title>
		<link>http://likealunatic.jp/2009/11/08_iphoneh.php</link>
		<comments>http://likealunatic.jp/2009/11/08_iphoneh.php#comments</comments>
		<pubDate>Sun, 08 Nov 2009 03:10:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://likealunatic.jp/wptest/2009/11/iphone%e3%81%aeipod%e3%82%a2%e3%83%97%e3%83%aa%e9%a2%a8%e8%a6%8b%e5%87%ba%e3%81%97%e3%82%a4%e3%83%b3%e3%82%bf%e3%83%bc%e3%83%95%e3%82%a7%e3%83%bc%e3%82%b9%e3%82%92js%e3%81%a7%e4%bd%9c%e3%81%a3.php</guid>
		<description><![CDATA[iPhoneにプリインストールしてあるiPodアプリのインターフェースを再現するJavaScriptです。要jQuery。
]]></description>
			<content:encoded><![CDATA[<p>昨日の<a href="http://twitter.com/Sugamo_css">Sugamo.css</a>で発表したコネタをポストします。</p>
<p><a href="http://likealunatic.jp/sample/iphoneh/">デモ：iPhoneのiPodアプリ風のインターフェースを再現するJS</a><br />
<a href="http://likealunatic.jp/sample/iphoneh/iphoneh.js">JSファイル：iPhoneのiPodアプリ風のインターフェースを再現するJS</a></p>
<p>これはiPhoneにプリインストールしてあるiPodアプリのインターフェースを再現するJavaScriptです。要jQuery。</p>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="スクリーンショット：iPhoneのiPod風のインターフェースを再現するJS" src="http://likealunatic.jp/images/2009/11/08_iphonehss.gif" width="400" height="250" class="mt-image-none" style="" /></span></p>
<p>iPodアプリで曲目リストやアーティストのリストを閲覧する際、「あ行」「か行」「さ行」みたいに並んでいるリストをスクロールしていくと、「あ行」のリストを見ているときは「あ」という見出しが画面上部に固定され、現在見ているリストがどの見出しに属するものなのかが見て分かるようになっています。つまり見出しがスクロールアウトされず、スクロールに着いてくる形になっているわけです。おそらく、一つのリストがとても長い場合は特に効果を発揮するかと思います。地味ですが確実にユーザビリティは向上するだろうという、粋な効果です。さすがApple。<br />
何を言っているかよく分からない、という人はとりあえずデモを見てください・・・。</p>

<span id="more-99"></span>
<div class="section">
<h3>使い方</h3>
<p>(X)HTMLは「見出し＋リスト（内容）＋それらを包むDIV」っていう構造になっていればOKです。内容部分はリストじゃなくても可。デモだと下記のようになっています。</p>
<pre><code>&lt;div class=&quot;genre&quot;&gt;
&lt;h3 class=&quot;header&quot;&gt;&lt;span&gt;A&lt;/span&gt;&lt;/h3&gt;
&lt;div class=&quot;body&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Aで始まるアーティスト&lt;/li&gt;
&lt;li&gt;Aで始まるアーティスト&lt;/li&gt;
&lt;li&gt;Aで始まるアーティスト&lt;/li&gt;
&lt;li&gt;Aで始まるアーティスト&lt;/li&gt;
&lt;li&gt;Aで始まるアーティスト&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;</code></pre>
<p>必要なJSファイルを読み込んだ後、<br />
<code>$(対象の見出しを指定するセレクタ).iphoneH();</code><br />
をドキュメントロード後に呼び出すように記述します。</p>
<pre><code>&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;iphoneh.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
$(document).ready(function() {
$('h3.header').iphoneH();
});
&lt;/script&gt;</code></pre>
<p>理屈を言えば、親DIVを基準に、見出しを<code>position:absolute</code>にして<code>top</code>の値をscrollイベントでいじっています。</p>
<p>見出しや内容部分は適当にスタイリングしましょう。デモだと元ネタが分かりやすいようにiPodアプリ風にまんまスタイリングしました。見出し部分に透過pngを使っていますが、IE6対策でどうのこうのとかはやっていません。</p>
<p>他のデザインに当てはめたときに正常に動くかはよく分からないです。多分その辺に突っ込みどころはたくさんあると思いますが（以下略</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://likealunatic.jp/2009/11/08_iphoneh.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LightBox系スクリプト 16選</title>
		<link>http://likealunatic.jp/2009/06/24_lightbox16.php</link>
		<comments>http://likealunatic.jp/2009/06/24_lightbox16.php#comments</comments>
		<pubDate>Tue, 23 Jun 2009 16:10:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Lightbox]]></category>

		<guid isPermaLink="false">http://likealunatic.jp/wptest/2009/06/lightbox%e7%b3%bb%e3%82%b9%e3%82%af%e3%83%aa%e3%83%97%e3%83%88-16%e9%81%b8.php</guid>
		<description><![CDATA[Lightbox系スクリプトの情報が一覧表になっているThe Lightbox Clones Matrixという素晴らしいサイトがあります。ここから自分なりに一通り見て回って、クオリティ的に使えそうなものをピックアップしてみました。
]]></description>
			<content:encoded><![CDATA[<p>Lightbox系スクリプトの情報が一覧表になっている<a href="http://planetozh.com/projects/lightbox-clones/">The Lightbox Clones Matrix</a>という素晴らしいサイトがあります。ここから一通り見て回って、自分なりに使えそうなものをピックアップしてみました。<del datetime="2009-06-25">ほとんど勢いでまとめたものなので、情報としての正確性は低いかもしれませんが、ご容赦を。</del>半分は自分用ってノリです。</p>
<p>自分はLightbox系のスクリプトを選ぶ時、そのサイトに予め組み込まれている（組み込む予定の）JSライブラリで使えるかどうかを基準に選ぶことが多いです。なので、必要とするJSライブラリ別にカテゴライズして並べています。</p>
<div class="section">
<h3>ライブラリ不要</h3>
<div class="section">
<h4><a href="http://highslide.com/">Highslide JS</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/highslidejs.jpg"><img alt="Highslide JS" src="http://likealunatic.jp/assets_c/2009/06/highslidejs-thumb-300x240-67.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>-</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー、インライン、インラインフレーム、Ajax、Flash</dd>
<dt>対象指定：</dt>
<dd>class属性＆onclick属性</dd>
<dt>ライセンス：</dt>
<dd><a href="http://creativecommons.org/licenses/by-nc/2.5/deed.ja">CCライセンス 表示-非営利 2.5 一般</a><br />
非商用：無償、商用-1サイト：29ドル、商用-無制限：179ドル</dd>
<dt>備考：</dt>
<dd>表示コンテンツのドラッグ移動が可能。Inline／Ajax／Iframe表示時には右端ドラッグでサイズ変更が可能。</dd>
</dl>
</div>
<div class="section">
<h4><a href="http://www.ibegin.com/labs/ibox/">iBox</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/ibox.jpg"><img alt="iBox" src="http://likealunatic.jp/assets_c/2009/06/ibox-thumb-300x240-68.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>-</dd>
<dt>対応形式：</dt>
<dd>画像、Ajax、インライン、Youtube動画などのムービー</dd>
<dt>対象指定：</dt>
<dd>rel属性</dd>
<dt>ライセンス：</dt>
<dd><a href="http://www.ibegin.com/labs/ibox/#license">無償</a></dd>
<dt>備考：</dt>
<dd>アニメーションがなく軽量。使い勝手はThickboxみたいな感じ。</dd>
</dl>
</div>
</div>
<div class="section">
<h3>jQuery</h3>
<div class="section">
<h4><a href="http://fancy.klade.lv/">FancyBox</a> <span class="memo">→オススメ</span></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/fancybox.jpg"><img alt="FancyBox" src="http://likealunatic.jp/assets_c/2009/06/fancybox-thumb-300x240-64.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>jQuery、jQuery Easing（オプション）</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー、インライン（Flashなど含む）、Ajax、Iframe</dd>
<dt>対象指定：</dt>
<dd>jQueryセレクタ、rel属性（画像ギャラリー指定時）、class属性（インラインフレーム指定時）</dd>
<dt>ライセンス：</dt>
<dd><a href="http://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license">MITライセンス</a></dd>
<dt>備考：</dt>
<dd>jQuery Easingプラグインなしだと、ズームアニメーション時のイージング効果がなしになる。</dd>
</dl>
</div>
<del datetime="2009-06-25" title="2009年6月25日 掲載削除">
<div class="section">
<h4><a href="http://orderedlist.com/articles/fancyzoom-meet-jquery">FancyZoom(jQuery)</a></h4>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>jQuery</dd>
<dt>対応形式：</dt>
<dd>画像、インライン（Flashなど含む）</dd>
<dt>対象指定：</dt>
<dd>jQueryセレクタ</dd>
<dt>ライセンス：</dt>
<dd>不明</dd>
<dt>備考：</dt>
<dd>ウィンドウのシャドウ部分などの透過pngパーツが、IE6では透過gifで代用されており見た目が落ちる。</dd>
</dl>
</div>
</del>
<div class="section">
<h4><a href="http://leandrovieira.com/projects/jquery/lightbox/">jQuery lightBox plugin</a> <span class="memo">→オススメ</span></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/jquery_lightbox.jpg"><img alt="jQuery lightBox plugin" src="http://likealunatic.jp/assets_c/2009/06/jquery_lightbox-thumb-300x240-70.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>jQuery</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー</dd>
<dt>対象指定：</dt>
<dd>jQueryセレクタ</dd>
<dt>ライセンス：</dt>
<dd><a href="http://creativecommons.org/licenses/by-sa/2.5/br/deed.jaCC">ライセンス 表示-継承 2.5 ブラジル</a></dd>
<dt>備考：</dt>
<dd>UIは本家Lightboxと全く同じ。裏の仕組みがjQueryで動くようにアレンジされたLightbox。jQueryセレクタの指定に複数要素が該当する場合、自動的に画像ギャラリーモードになる模様。<a href="http://leandrovieira.com/projects/jquery/lightbox/#extend">本家Lightboxとは違って色々なパラメーターがあり、カスタマイズができる</a>。</dd>
</dl>
</div>
<div class="section">
<h4><a href="http://www.no-margin-for-errors.com/projects/prettyPhoto-jquery-lightbox-clone/">prettyPhoto</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/prettyphoto.jpg"><img alt="prettyPhoto a jQuery lightbox clone" src="http://likealunatic.jp/assets_c/2009/06/prettyphoto-thumb-300x240-74.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>jQuery</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー、Flash、RealMedia、インラインフレーム</dd>
<dt>対象指定：</dt>
<dd>rel属性、href属性のパラメータ、jQueryセレクタ、オプションでtitle属性</dd>
<dt>ライセンス：</dt>
<dd><a href="http://creativecommons.org/licenses/by/2.5/deed.ja">CCライセンス 2.5</a></dd>
<dt>備考：</dt>
<dd>対応形式のメディアそれぞれを混合したギャラリー表示が可能。デフォルトのスタイルは黒いUI。</dd>
</dl>
</div>
<div class="section">
<h4><a href="http://jquery.com/demo/thickbox/">ThickBox</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/thickbox.jpg"><img alt="Thickbox" src="http://likealunatic.jp/assets_c/2009/06/thickbox-thumb-300x240-78.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>jQuery</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー、インライン、インラインフレーム、Ajax</dd>
<dt>対象指定：</dt>
<dd>class属性、title属性、href属性のパラメータ</dd>
<dt>ライセンス：</dt>
<dd><a href="http://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license">MITライセンス</a></dd>
<dt>備考：</dt>
<dd>jQueryを使うLighbox系スクリプトの代表的な存在。多様な形式に対応。アニメーションはしないが、その分軽快に動作する。</dd>
</dl>
</div>
</div>
<div class="section">
<h3>Prototype.js <ins datetime="2009-06-25">+ script.aculo.us</ins></h3>
<del datetime="2009-06-25" title="2009年6月25日 掲載削除">
<div class="section">
<h4><a href="http://orderedlist.com/articles/fancyzoom-meet-prototype">FancyZoom</a></h4>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>Prototype.js、script.aculo.us</dd>
<dt>対応形式：</dt>
<dd>インライン</dd>
<dt>対象指定：</dt>
<dd>href属性</dd>
<dt>ライセンス：</dt>
<dd>不明</dd>
<dt>備考：</dt>
<dd>対象のインラインコンテンツのIDをhref属性で指定できる・・・だけ？ウィンドウのシャドウ部分などの透過pngパーツが、IE6では透過gifで代用されており見た目が落ちる。</dd>
</dl>
</div>
</del>
<ins datetime="2009-06-25" title="2009年6月25日 掲載追加">
<div class="section">
<h4><a href="http://www.huddletogether.com/projects/lightbox2/">Lightbox2</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/lightbox2.jpg"><img alt="Lightbox2" src="http://likealunatic.jp/assets_c/2009/06/lightbox2-thumb-300x240-97.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>Prototype.js、script.aculo.us</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー</dd>
<dt>対象指定：</dt>
<dd>rel属性、title属性</dd>
<dt>ライセンス：</dt>
<dd><a href="http://creativecommons.org/licenses/by/2.5/deed.ja">CCライセンス 表示 2.5 一般</a></dd>
<dt>備考：</dt>
<dd>元祖Lightbox。オプション設定などはないが、使い方は単純明快。</dd>
</dl>
</div>
</ins>
<div class="section">
<h4><a href="http://www.nickstakenburg.com/projects/lightview/">Lightview</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/lightview.jpg"><img alt="Lightview" src="http://likealunatic.jp/assets_c/2009/06/lightview-thumb-300x240-71.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>Prototype.js、script.aculo.us</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー、Flash、QuickTime、Ajax、インラインフレーム、インライン</dd>
<dt>対象指定：</dt>
<dd>class属性、title属性、rel属性</dd>
<dt>ライセンス：</dt>
<dd>非商用の場合、<a href="http://creativecommons.org/licenses/by-nc-nd/3.0/deed.ja">CCライセンス:表示-非営利-改変禁止 3.0 Unported</a><br />
商用の場合、<a href="http://creativecommons.org/licenses/by-nd/3.0/deed.ja">CCライセンス:表示-改変禁止 3.0</a><br />
有償。非商用（1ドメイン）：3$、非商用（制限なし）：$15、商用（1ドメイン）：49$、商用（制限なし）：$295</dd>
<dt>備考：</dt>
<dd>多機能Lightbox。有償だけあってクオリティは高いが、たくさんのオプションがあるので使いこなすのは骨が折れるかも。</dd>
</dl>
</div>
<div class="section">
<h4><a href="http://www.wildbit.com/labs/modalbox/">ModalBox</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/modalbox.jpg"><img alt="ModalBox" src="http://likealunatic.jp/assets_c/2009/06/modalbox-thumb-300x240-72.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>Prototype.js、script.aculo.us</dd>
<dt>対応形式：</dt>
<dd>プレーンHTML（文字列）、DOMノード</dd>
<dt>対象指定：</dt>
<dd>href属性、title属性、onclick属性</dd>
<dt>ライセンス：</dt>
<dd>不明</dd>
<dt>備考：</dt>
<dd>画面上部からニョロっとオーバーレイボックスが出現する。導入説明が親切。</dd>
</dl>
</div>
</div>
<div class="section">
<h3>MooTools</h3>
<div class="section">
<h4><a href="http://bertramakers.com/moolabs/imagezoom.php">ImageZoom</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/imagezoom.jpg"><img alt="ImageZoom" src="http://likealunatic.jp/assets_c/2009/06/imagezoom-thumb-300x240-69.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>MooTools</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー</dd>
<dt>対象指定：</dt>
<dd>rel属性、オプションでtitle属性</dd>
<dt>ライセンス：</dt>
<dd><a href="http://creativecommons.org/licenses/by-sa/3.0/deed.ja">CCライセンス 表示-継承 3.0 Unported</a></dd>
<dt>備考：</dt>
<dd>対応形式が画像のみと少ないが、ズームするアニメーションがお洒落。拡大状態を複数開けるのが個性的。</dd>
</dl>
</div>
<div class="section">
<h4><a href="http://www.phatfusion.net/multibox/">phatfusion</a> <span class="memo">→オススメ</span></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/phatfusion.jpg"><img alt="phatfusion" src="http://likealunatic.jp/assets_c/2009/06/phatfusion-thumb-300x240-73.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>MooTools v1.11</dd>
<dt>対応形式：</dt>
<dd>画像、Flash、QuickTime、WindowsMedia、RealMedia、MP3、Ajax、インラインフレーム、インラインHTML</dd>
<dt>対象指定：</dt>
<dd>スクリプト、rel属性、title属性</dd>
<dt>ライセンス：</dt>
<dd><a href="http://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license">MITライセンス</a></dd>
<dt>備考：</dt>
<dd>対応形式のメディアそれぞれを混合したギャラリー表示が可能。デフォルトのスタイルだとUIが黒い。この辺はスクリプト呼び出し時のオプションでカスタマイズ可能。多機能でクオリティ高し。</dd>
</dl>
</div>
<ins datetime="2009-06-25" title="2009年6月25日 掲載追加">
<div class="section">
<h4><a href="http://www.coders.me/ejemplos/sexy-lightbox/">SexyLightBox</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/sexy_lightbox.jpg"><img alt="SexyLightbox" src="http://likealunatic.jp/assets_c/2009/06/sexy_lightbox-thumb-300x240-96.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>MooTools</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー</dd>
<dt>対象指定：</dt>
<dd>スクリプト、class属性、rel属性、title属性</dd>
<dt>ライセンス：</dt>
<dd><a href="http://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license">MITライセンス</a></dd>
<dt>備考：</dt>
<dd>画面上部からビヨーンと登場するという、変わったアニメーションが特徴的。公式サイトの字が読めない。.meというドメインがモンテネグロのドメインなので、モンテネグロのサイト・・・？</dd>
</dl>
</div>
</ins>
<div class="section">
<h4><a href="http://www.digitalia.be/software/slimbox">Slimbox</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/slimbox.jpg"><img alt="Slimbox" src="http://likealunatic.jp/assets_c/2009/06/slimbox-thumb-300x240-76.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>MooTools 1.2</dd>
<dt>対応形式：</dt>
<dt>対象指定：</dt>
<dd>スクリプト、rel属性、title属性</dd>
<dt>ライセンス：</dt>
<dd><a href="http://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license">MITライセンス</a></dd>
<dt>備考：</dt>
<dd>UIはLightboxと全く同じ。Slimというだけあってライトウェイトであることがウリらしい。スクリプトの書き方次第でダイレクトにSlimboxを呼び出すことも可能。jQueryバージョンもあるとのこと（http://www.digitalia.be/software/slimbox2）。</dd>
</dl>
</div>
<div class="section">
<h4><a href="http://gueschla.com/labs/smoothbox/">Smoothbox, Thickbox for mootools</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/smoothbox.jpg"><img alt="Smoothbox, Thickbox for MooTools" src="http://likealunatic.jp/assets_c/2009/06/smoothbox-thumb-300x240-77.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>MooTools</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー、インライン、インラインフレーム、Ajax</dd>
<dt>対象指定：</dt>
<dd>class属性、title属性、href属性のパラメータ</dd>
<dt>ライセンス：</dt>
<dd><a href="http://sourceforge.jp/projects/opensource/wiki/licenses%2FMIT_license">MITライセンス</a></dd>
<dt>備考：</dt>
<dd>ThickboxのMooTool版。UIはThickBoxと同じ。IE8には非対応だった（オーバーレイ部分が真っ黒に）。</dd>
</dl>
</div>
</div>
<div class="section">
<h3>YUI</h3>
<div class="section">
<h4><a href="http://thecodecentral.com/2008/01/01/yui-based-lightbox-final">YUI Based Lightbox</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/yui_lightbox.jpg"><img alt="YUI Lightbox" src="http://likealunatic.jp/assets_c/2009/06/yui_lightbox-thumb-300x240-79.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>YUI</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー</dd>
<dt>対象指定：</dt>
<dd>スクリプト、id属性（img要素）</dd>
<dt>ライセンス：</dt>
<dd><a href="http://creativecommons.org/licenses/by-sa/3.0/deed.ja">CCライセンス 表示-継承 3.0 Unported</a></dd>
<dt>備考：</dt>
<dd>コントロールパネルを表示されたり、画像のキャプションを入れるボックスを表示されたり。画像表示領域と、キャプションはドラッグで移動可能。</dd>
</dl>
</div>
</div>
<div class="section">
<h3>その他</h3>
<div class="section">
<h4><a href="http://www.shadowbox-js.com/">Shadowbox.js</a></h4>
<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://likealunatic.jp/images/2009/06/shadowbox.jpg"><img alt="Shadowbox.js" src="http://likealunatic.jp/assets_c/2009/06/shadowbox-thumb-300x240-75.jpg" width="300" height="240" class="mt-image-none" style="" /></a></span></p>
<dl class="squarelist">
<dt>必要ライブラリ：</dt>
<dd>基本的には不要（※）<br />
※JSライブラリ（Adapter）を先に読み込ませると自動的に感知して、それと一緒に動作するようになる（らしい）。Adapterとして使えるのは Prototype、jQuery、MooTools (requires 1.2 Core)、Dojo Toolkit、Yahoo! User Interface Library (requires yahoo-dom-event.js)、Ext (requires ext-core.js)。</dd>
<dt>対応形式：</dt>
<dd>画像、画像ギャラリー、イメージマップ、Flash、各種ムービー、インラインフレーム、インライン、フォーム等</dd>
<dt>対象指定：</dt>
<dd>スクリプト、rel属性、title属性</dd>
<dt>ライセンス：</dt>
<dd><a href="http://www.shadowbox-js.com/LICENSE">Shadowbox.js License</a><br />
→有償。Single Developer: $20.00、Multiple Developer: $50.00</dd>
<dt>備考：</dt>
<dd>超高機能。アニメーションは控えめで上質感を感じさせる。スクリプト呼び出し時に引数として様々なオプションを指定可能。</dd>
</dl>
</div>
</div>

<span id="more-86"></span>
<div class="postscript">
<h3>追記</h3>
<dl class="disclist">
<dt><ins datetime="2009-06-25">2009年6月25日</ins></dt>
<dd><ins datetime="2009-06-25"><a href="http://orderedlist.com/articles/fancyzoom-meet-prototype">FancyZoom(Prototype)</a>と<a href="http://orderedlist.com/articles/fancyzoom-meet-jquery">FancyZoom(jQuery)</a>を削除。
<a href="http://www.huddletogether.com/projects/lightbox2/">Lightbox2</a>と<a href="http://www.coders.me/ejemplos/sexy-lightbox/">SexyLightBox</a>を追加。各ライセンス表記にリンクを追加</ins></dd>
</dl>
</div>
]]></content:encoded>
			<wfw:commentRss>http://likealunatic.jp/2009/06/24_lightbox16.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LineNumberWriterを0.4にバージョンアップ</title>
		<link>http://likealunatic.jp/2009/06/16_linenumberwriter04.php</link>
		<comments>http://likealunatic.jp/2009/06/16_linenumberwriter04.php#comments</comments>
		<pubDate>Tue, 16 Jun 2009 04:56:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[LineNumberWriter]]></category>

		<guid isPermaLink="false">http://likealunatic.jp/wptest/2009/06/linenumberwriter%e3%82%920-4%e3%81%ab%e3%83%90%e3%83%bc%e3%82%b8%e3%83%a7%e3%83%b3%e3%82%a2%e3%83%83%e3%83%97.php</guid>
		<description><![CDATA[1年以上放置していたので今更感がありますが、LineNumberWriterをバージョンアップしました。今回から、変換対象のコード内でタグが使えるようになります。例えば以下のように、strong要素やspan要素などを挿入することが可能です。（※） &#60;strong&#62;で囲んでみました &#60;span style=&#34;color:#F33;&#34;&#62;で囲んでみました ※もちろん(X)HTMLの文法的にcode要素に含められない内容（ブロック要素など）は含めちゃダメですよ。 今度Sugamo.cssという企画に参加することにしたので、何かプライベートワークをやっていかなきゃいけないような気になり、とりあえずコレのバージョンアップでも、と着手しました。 実は前からタグが使えるようにしたくてちょくちょくいじってはいたんですが、IEの独自仕様でまた色々とつまづいてしまい、挫折しちゃってたんです。でもまぁ最近、良いアイデアが浮かんだのでどうにか形になった、という。 ダウンロードしようなどという奇特な方はこちらからどうぞ。]]></description>
			<content:encoded><![CDATA[<p>1年以上放置していたので今更感がありますが、<a href="http://likealunatic.jp/2008/04/04_linenumberwriter.php">LineNumberWriter</a>をバージョンアップしました。今回から、変換対象のコード内でタグが使えるようになります。例えば以下のように、<code>strong</code>要素や<code>span</code>要素などを挿入することが可能です。（※）</p>
<pre><code><strong>&lt;strong&gt;で囲んでみました</strong>
<span style="color:#F33">&lt;span style=&quot;color:#F33;&quot;&gt;で囲んでみました</span></code></pre>
<p>※もちろん(X)HTMLの文法的にcode要素に含められない内容（ブロック要素など）は含めちゃダメですよ。</p>
<p>今度<a href="http://archiva.jp/web/sugamo_css/sugamo_css.html">Sugamo.css</a>という企画に参加することにしたので、何かプライベートワークをやっていかなきゃいけないような気になり、とりあえずコレのバージョンアップでも、と着手しました。<br />
実は前からタグが使えるようにしたくてちょくちょくいじってはいたんですが、IEの独自仕様でまた色々とつまづいてしまい、挫折しちゃってたんです。でもまぁ最近、良いアイデアが浮かんだのでどうにか形になった、という。</p>
<p><a href="http://likealunatic.jp/2008/04/04_linenumberwriter.php">ダウンロードしようなどという奇特な方はこちらからどうぞ。</a></p>
]]></content:encoded>
			<wfw:commentRss>http://likealunatic.jp/2009/06/16_linenumberwriter04.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Memo]:visitedクラスを利用した行動ターゲティング広告</title>
		<link>http://likealunatic.jp/2008/11/12_visitedlink.php</link>
		<comments>http://likealunatic.jp/2008/11/12_visitedlink.php#comments</comments>
		<pubDate>Wed, 12 Nov 2008 01:54:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://likealunatic.jp/wptest/2008/11/memovisited%e3%82%af%e3%83%a9%e3%82%b9%e3%82%92%e5%88%a9%e7%94%a8%e3%81%97%e3%81%9f%e8%a1%8c%e5%8b%95%e3%82%bf%e3%83%bc%e3%82%b2%e3%83%86%e3%82%a3%e3%83%b3%e3%82%b0%e5%ba%83%e5%91%8a.php</guid>
		<description><![CDATA[とても興味深い内容だったのでメモ。 行動ターゲティング広告はどこまで許されるのか&#160;インターネット-最新ニュース:IT-PLUS visited疑似クラスのビーコンを拾うサービスが登場 個人で使うドリコム式行動ターゲティング広告 id:Hamachiya2さんのデモのソースを見るとCSSの:visited擬似クラスと、JavaScriptを併用した形で、動的にコンテンツを入れ替える方法が分かります。 まずCSSで:visited擬似クラスに別のスタイルを書いておいて a { display: block; height: 22px; overflow: hidden; } a:visited { height: 16px; } JavaScriptの以下のようなコードで、訪問の有無を調べています。 var defHeight = 22; var visHeight = 16; ...中略... // 引数にはa要素ノードを入れる // その高さがデフォルトでない（既訪問リンク）ならtrueを返す // その高さがデフォルト（未訪問リンク）ならfalse返す function checkVisited(elm) { return (elm.offsetHeight != defHeight); } 実行はwindow.onloadのイベントで。なるほど。 自らの意図しない情報が、このように簡単に取得されてしまうのかと思うと、気持ちが悪いな・・・と思うと同時に、簡単であるが故に防ぎようがないと思いました。]]></description>
			<content:encoded><![CDATA[<p>とても興味深い内容だったのでメモ。</p>
<ul class="disclist">
<li><a href="http://it.nikkei.co.jp/internet/news/index.aspx?n=MMITbe000015102008">行動ターゲティング広告はどこまで許されるのか&nbsp;インターネット-最新ニュース:IT-PLUS</a></li>
<li><a href="http://bakera.jp/ebi/topic/3298">visited疑似クラスのビーコンを拾うサービスが登場</a></li>
<li><a href="http://d.hatena.ne.jp/Hamachiya2/20081029/visited">個人で使うドリコム式行動ターゲティング広告</a></li>
</ul>
<p><a href="http://hamachiya.com/junk/visited.html">id:Hamachiya2さんのデモ</a>のソースを見るとCSSの:visited擬似クラスと、JavaScriptを併用した形で、動的にコンテンツを入れ替える方法が分かります。</p>
<p>まずCSSで:visited擬似クラスに別のスタイルを書いておいて</p>
<pre><code>a {
display: block;
height: 22px;
overflow: hidden;
}
a:visited {
height: 16px;
}</code></pre>
<p>JavaScriptの以下のようなコードで、訪問の有無を調べています。</p>
<pre><code>var defHeight = 22;
var visHeight = 16;
...中略...
// 引数にはa要素ノードを入れる
// その高さがデフォルトでない（既訪問リンク）ならtrueを返す
// その高さがデフォルト（未訪問リンク）ならfalse返す
function checkVisited(elm) {
return (elm.offsetHeight != defHeight);
}</code></pre>
<p>実行はwindow.onloadのイベントで。なるほど。</p>
<p>自らの意図しない情報が、このように簡単に取得されてしまうのかと思うと、気持ちが悪いな・・・と思うと同時に、簡単であるが故に防ぎようがないと思いました。</p>
]]></content:encoded>
			<wfw:commentRss>http://likealunatic.jp/2008/11/12_visitedlink.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LineNumberWriter開発メモ</title>
		<link>http://likealunatic.jp/2008/04/05_linenumberwriter.php</link>
		<comments>http://likealunatic.jp/2008/04/05_linenumberwriter.php#comments</comments>
		<pubDate>Sat, 05 Apr 2008 09:59:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[LineNumberWriter]]></category>

		<guid isPermaLink="false">http://likealunatic.jp/wptest/2008/04/linenumberwriter%e9%96%8b%e7%99%ba%e3%83%a1%e3%83%a2.php</guid>
		<description><![CDATA[LineNumberWriterを作るに当たって気づいた点やその他補足など。自分で書いていて改めて気付きましたけど、かなりの欠陥品です...orz
]]></description>
			<content:encoded><![CDATA[<p><a href="/2008/04/04_linenumberwriter.php">LineNumberWriter</a>を作るに当たって気づいた点やその他補足など。自分で書いていて改めて気付きましたけど、かなりの欠陥品です...orz</p>
<div class="section">
<h3>基本設計</h3>
<p>行番号を振るための処理は、基本的に<a href="http://code.google.com/p/syntaxhighlighter/">syntaxhighlithter.js</a>とほとんど同じ。というか、syntaxhighlighter.jsを参考にして作りました。</p>
<p>処理の流れとしては、</p>
<ol class="decimallist">
<li>まずページ内に&lt;pre&gt;&lt;code&gt;とマークアップされている部分を取得します。</li>
<li><del datetime="2008-04-07T22:29+09:00" title="2008年4月7日 削除">それら個々を&lt;ol&gt;&lt;li&gt;番号順リストのマークアップに変換します。</del><ins datetime="2008-04-07T22:29+09:00" title="2008年4月7日 追記">それら個々を&lt;ol&gt;&lt;li&gt;番号順リストのマークアップに変換したものと、そのままのもの（プレーンテキスト）、それぞれ二つづつを生成します。プレーンテキストの方はデフォルトで非表示にします</ins></li>
<li>奇数行と偶数行のli要素それぞれに別のclass属性値を設定します。</li>
<li><ins datetime="2008-04-07T22:29+09:00" title="2008年4月7日 追記">変換後のコードとプレーンテキストとを切り替えるヘッダー部分を生成します。</ins></li>
<li><del datetime="2008-04-07T22:29+09:00" title="2008年4月7日 削除">最後にdiv要素で包みます（後でスタイルを整える都合）。</del><ins datetime="2008-04-07T22:29+09:00" title="2008年4月7日 追記">最後にこれらをdiv要素内に書き出し、元の&lt;pre&gt;&lt;code&gt;部分と差し替えます。</ins></li>
</ol>
<pre><code>&lt;pre&gt;&lt;code&gt;function sample() {
alert(&quot;sample&quot;);
}&lt;/code&gt;&lt;/pre&gt;</code></pre>
<p>これが</p>
<pre><code>&lt;div class=&quot;LNW&quot;&gt;
&lt;div class=&quot;header&quot; style=&quot;display:none&quot;&gt;
&lt;a href=&quot;#&quot; class=&quot;ctrl1&quot;&gt;with line number&lt;/a&gt;
&lt;span class=&quot;ctrl2&quot;&gt;plain text&lt;/span&gt;
&lt;/div&gt;
&lt;div class=&quot;header&quot;&gt;
&lt;span class=&quot;ctrl1&quot;&gt;with line number&lt;/span&gt;
&lt;a href=&quot;#&quot; class=&quot;ctrl2&quot;&gt;plain text&lt;/a&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li class=&quot;odd&quot;&gt;function&amp;nbsp;sample()&amp;nbsp;{&lt;/li&gt;
&lt;li class=&quot;even&quot;&gt;&amp;nbsp;&amp;nbsp;alert(&amp;quot;sample&amp;quot;);&lt;/li&gt;
&lt;li class=&quot;odd&quot;&gt;}&lt;/li&gt;
&lt;/ol&gt;
&lt;pre style=&quot;display:none&quot;&gt;&lt;code&gt;function sample() {
alert(&quot;sample&quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</code></pre>
<p>こうなります。</p>
</div>

<span id="more-46"></span>
<div class="section">
<h3>改行をどうやって拾うか</h3>
<p>取得したDOM要素のinnerHTMLプロパティから拾えれば全く問題なかったんです。innerHTMLから改行を拾う処理はこんな感じ。</p>
<pre><code>var str = codeElement.innerHTML;
str = str.replace(/\r?\n/g, "\r");</code></pre>
<p>で、splitメソッドで分割して、li要素に突っ込んでいけばOKと思っていました。</p>
<pre><code>var line = str.split("\r");
var i,l,li;
for(i=0,l=line.length; i&lt;l; i++) {
li = document.createElement("li");
li.innerHTML = line[i];
}</code></pre>
<p>ところが、、WinIEがどうやっても改行を拾ってくれません。innerHTMLにした瞬間に全部改行が消えてしまう・・・！</p>
<p>そこで、取得した要素のコード部分をテキストノードとして拾い、そのnodeValueから拾ったら、うまくいきました。ただしこのやり方だと、テキストノード以外のノード（要素ノードとか）が混じっていると処理が複雑になりすぎてしまう・・・。ここで壁にぶち当たります。</p>
<p>「今の自分にはこりゃ作れない」という気になってきたので気分を切り替え、そういう仕様と割り切っていっそのこと<em>タグを使用不可にすればいいじゃん</em>と考えました。取得したDOM要素内には常にテキストノードだけが入っている状態なら良いわけですから。</p>
</div>
<div class="section">
<h3>Safariのヘンなところ発見</h3>
<p>コードの一行目に含まれているのが改行のみの場合、Safariがその改行を拾ってくれません。一行目が改行だけってシチュエーションがまずないので、これもスルーしています。</p>
<p>次のようになるべきコードが</p>
<pre><code>  &lt;ol&gt;
&lt;li class=&quot;odd&quot;&gt;&lt;/li&gt;
&lt;li class=&quot;even&quot;&gt;function&amp;nbsp;sample()&amp;nbsp;{&lt;/li&gt;
&lt;li class=&quot;odd&quot;&gt;&amp;nbsp;&amp;nbsp;alert(&amp;quot;sample&amp;quot;);&lt;/li&gt;
&lt;li class=&quot;even&quot;&gt;}&lt;/li&gt;
&lt;/ol&gt;</code></pre>
<p>Safariでは次のようになります。</p>
<pre><code>  &lt;ol&gt;
&lt;li class=&quot;odd&quot;&gt;function&amp;nbsp;sample()&amp;nbsp;{&lt;/li&gt;
&lt;li class=&quot;even&quot;&gt;&amp;nbsp;&amp;nbsp;alert(&amp;quot;sample&amp;quot;);&lt;/li&gt;
&lt;li class=&quot;odd&quot;&gt;}&lt;/li&gt;
&lt;/ol&gt;</code></pre>
</div>
<div class="section">
<h3>ブラウザ振り分け処理</h3>
<p>WinIEだけ別処理にしたいので振り分けます。確かWinIEだけ実装している、document.allオブジェクトを利用してみました。が、Operaもひっかかってきた（Operaもdocument.allを実装していた）ので、Operaだけが実装しているwindow.operaオブジェクトをさらに利用します。</p>
<pre><code>if(document.all &amp;&amp; !window.opera) {
WinIE用の処理
} else {
その他のブラウザ用の処理
}</code></pre>
<p>ホントはもっとスマートなやり方があると思います・・・。</p>
</div>
<div class="section">
<h3>半角スペースの変換問題</h3>
<p>いっぽう、WinIE以外のブラウザではinnerHTMLから改行が拾えるからタグ使えるんじゃね？と思っていたら、別の問題にぶち当たりました。次に問題となったのは半角スペースです。</p>
<p>まず前提として、コードのインデントなどに使われる半角スペースを拾い、&amp;nbsp;へと変換する処理を行っています。タグに属性値をセットしている場合、この処理で属性名前の半角スペースを拾われてしまい、ヘンテコな状態に変換されてしまいました。</p>
<pre><code>sample text
&lt;a href=&quot;sample.html&quot;&gt;sample text&lt;/a&gt;
sample text</code></pre>
<p>これが</p>
<pre><code>sample&amp;nbsp;text
&amp;nbsp;&amp;nbsp;&lt;a&amp;nbsp;href=&quot;sample.html&quot;&gt;sample&amp;nbsp;text&lt;/a&gt;
&amp;nbsp;&amp;nbsp;sample&amp;nbsp;text</code></pre>
<p>こうなっちゃいました。<br />
というわけで、結局タグは使えない仕様で行くことに決定。</p>
</div>
<div class="section">
<h3>CSSでも...</h3>
<p>CSSを書く段階になってもWinIEに苦しめられます。</p>
<p>横に長いコードを詰め込んだときにスクロールバーを出すためにoverflow:autoを設定するわけですが、スクロールバーが出た状態のWinIEがとてもヘン。それから、ol要素にoverflow設定をするとIE6で幅がヘンなことに。syntaxhighlighter.jsを参考に、全体をdiv要素で包み、そちらにoverflow設定をするこにしました。</p>
<p>また、横スクロールバーが出た際にWinIEは、スクロールバーの高さ分をそのボックスの高さに含めてしまう模様。そしてそのせいで、横スクロールバーが出ると同時に、縦スクロールバーも出てしまう・・・。</p>
<p>横長なコードのくせに1行か2行しかない場合が最悪で、コードが横スクロールバーに隠れてしまい、ロクに見ることができなくなってしまいます。これはお話にならない！というわけでWinIEだけハックで下paddingを設定し、スクロールバー分の高さを稼ぎました。これによって縦スクロールバーが出なくなり、コードの閲覧性は上がりました。が、スクロールバーが出た時に下marginが狭くなるという副作用が・・・。もうここでお手上げとなりました。</p>
</div>
<p>CSSが書ける方であれば、linenumberwriter.cssのソースコードをいじれば、変換後のスタイルを自由に変更できます。お気に入りのスタイルにどうぞ。</p>
<p><del datetime="2008-04-07T22:29+09:00" title="2008年4月7日 削除">div.LNWの上下のmargin、color、font-size辺り、それから各要素のbackground-colorやborder辺りがいじりどころだと思います。</del><ins datetime="2008-04-07T22:29+09:00" title="2008年4月7日 追記">0.2にバージョンアップするに当たり、CSSも大分見直しました。</ins></p>
]]></content:encoded>
			<wfw:commentRss>http://likealunatic.jp/2008/04/05_linenumberwriter.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LineNumberWriter &#8211; syntaxhighlighter風のJavaScriptを書いてみた</title>
		<link>http://likealunatic.jp/2008/04/04_linenumberwriter.php</link>
		<comments>http://likealunatic.jp/2008/04/04_linenumberwriter.php#comments</comments>
		<pubDate>Fri, 04 Apr 2008 13:46:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[LineNumberWriter]]></category>

		<guid isPermaLink="false">http://likealunatic.jp/wptest/2008/04/linenumberwriter-syntaxhighlighter%e9%a2%a8%e3%81%aejavascript%e3%82%92%e6%9b%b8%e3%81%84%e3%81%a6%e3%81%bf%e3%81%9f.php</guid>
		<description><![CDATA[サンプルコードを装飾するSyntaxHighlighter風のJavaScriptを書いてみました。行番号が付き、1行おきに背景色が付くというだけのものですので、syntaxはhighlightされません。よって、SyntaxHighlighterとは名乗れないので、LineNumberWriterと名乗ることにします。
]]></description>
			<content:encoded><![CDATA[<p>最近いろんなところで見かけるようになった<a href="http://code.google.com/p/syntaxhighlighter/">syntaxhighlighter.js</a>。文法が分かりやすいようにコードがカラーリングされ、行番号が付いてとてもコードが見やすいです。導入を検討しようかと思ったのですが、(X)HTML的に文法違反になるのは許せないなーと思い、違った形のものをJavaScriptで書いてみました。当サイトに導入済みです。次のような見た目になります。</p>
<pre><code>function sample() {
alert(&quot;sample&quot;);
}</code></pre>
<p>ただし、私が作ったのはSyntaxHighlighterではありません。<em>行番号が付き</em>、<em>1行おきに背景色が付く</em>だけのものです。<em>syntaxはhighlightされません</em>。よって、SyntaxHighlighterとは名乗れないので、<strong>LineNumberWriter</strong>と名乗ることにします（これ、果たして妥当な英語なんでしょうか・・・）。</p>
<p>もし使ってみたいという方がおりましたらご自由に使ってみてくださいまし。下記リンクからzipファイルでダウンロードできます。</p>
<p><a href="/lib/linenumberwriter_0.4.1.zip" onclick="pageTracker._trackPageview('/downloads/linenumberwriter_041');"><strong title="2009-10-15">linenumberlighter Ver.0.4.1</strong></a></p>
<p><del datetime="2009-06-16">勢いで作ったものなので、バージョンは0.1ということにします。それから一応、</del>ライセンスは<a href="http://www.opensource.org/licenses/mit-license.php">MITライセンス</a>としておきますね。<ins datetime="2008-04-05">（2008年4月5日追記）<a href="/2008/04/04_linenumberwriter.php#LNWupdate">更新履歴</a>を付けるようにしました。</ins></p>

<span id="more-45"></span>
<div class="section">
<h3>動作確認済みブラウザ</h3>
<ul class="disclist">
<li>Windows IE6 / 7 / <ins datetime="2009-06-16" title="2009年6月16日 追記">8</ins></li>
<li>Windows Firefox2 / <ins datetime="2009-06-16" title="2009年6月16日 追記">3</ins></li>
<li>Windows Opera<ins datetime="2009-06-16" title="2009年6月16日 追記">9.6</ins></li>
<li><ins datetime="2008-04-07" title="2008年4月7日 追記">Windows Safari3.1</ins></li>
<li><ins datetime="2009-06-16" title="2009年6月16日 追記">Windows Google Chrome2</ins></li>
<li>Mac Safari3</li>
<li>Mac Firefox2 / <ins datetime="2009-06-16" title="2009年6月16日 追記">3</ins></li>
<li>Mac Opera<ins datetime="2009-06-16" title="2009年6月16日 追記">9.6</ins></li>
</ul>
</div>
<div class="section">
<h3>使い方</h3>
<p>ダウンロードしたzipファイルを解凍すると、<em>linenumberwriter.js</em>と<em>linenumberwriter.css</em>が入っています。この2つを両方とも(X)HTMLファイルから読み込んでください。例えば次のようなコードをhead要素内に記述し、呼び出します。</p>
<pre><code>&lt;script type="text/javascript" src="/js/linenumberwriter.js"&gt;&lt;/script&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;/css/linenumberwriter.css&quot; media=&quot;screen,projection&quot; /&gt;</code></pre>
<p>前項JSを呼び出した後で、<code>window.onload</code>イベントなどで<code>LNW.write();</code>というメソッドを呼び出してあげます。（その他にも<code>window.onload</code>イベントで呼び出しているメソッドがあったら、イベントを上書きしないようご注意ください）</p>
<pre><code>window.onload = function() {
LNW.write();
}</code></pre>
<p>(X)HTML内の<em><code>&lt;pre&gt;&lt;code&gt;</code>から<code>&lt;/code&gt;&lt;pre&gt;</code>まででマークアップされているコードが自動的に変換の対象となります</em>。</p>
</div>
<div class="section">
<h3>使用上の注意&amp;既知の不具合</h3>
<ul class="disclist-comment">
<li>現在の仕様では<code>&lt;pre&gt;&lt;code&gt;</code>でマークアップしてしまうと、強制的に変換対象となってしまいますので、ページ内で例外的なスタイルを作れません。</li>
<li><del datetime="2009-06-16"><code>&lt;pre&gt;&lt;code&gt;</code>内では<strong>タグが使えません</strong>。具体的には<em>コードの一部をstrong要素で強調する</em>といった使い方や、<em>コードの一部をspan要素でマークアップして色を付ける</em>といった使い方はできません。これも仕様です。<br />
もしタグを使ってしまうと一部コードが非表示になってしまうなどして、表示が崩れます。</del><br />
<ins datetime="2009-06-16" title="2009年6月16日 追記">0.4にアップデートするに当たり、<code>&lt;pre&gt;&lt;code&gt;</code>内でタグが使用できるようになりました。</ins></li>
<li>一行目に改行のみが含まれている場合、Safariではその改行を拾ってくれません。</li>
<li>コードが表示エリアをはみ出した場合、スクロールバーが表示されますが、行の背景色がはみ出した部分に付きません。</li>
<li>IEではスクロールバーが表示されてしまうと、いろいろとヘンなことに・・・（それをハックでごまかしています。。）</li>
</ul>
</div>
<div class="section">
<h3><a name="LNWupdate" id="LNWupdate">更新履歴</a></h3>
<ul>
<li><ins datetime="2009-10-15">2009年10月15日 - 0.4.1にアップデート<br />
空白行が「nbsp;」と出力されてしまう不具合を修正しました。</ins></li>
<li><ins datetime="2009-06-16">2009年6月16日 - 0.4にアップデート<br />
変換対象内（<code>&lt;pre&gt;&lt;code&gt;</code>内）でタグを使えるようにしました。コードの一部をstrong要素で強調したり、span要素で囲んで特定のスタイルを適用するといったことが可能となります。</ins></li>
<li><ins datetime="2008-04-07">2008年4月7日 - 0.2にアップデート<br />
タブっぽいリンクをクリックすることによって、プレーンテキストと切り替えられるようにしました。Firefoxでコードをコピペした時にリストマーカー部分がくっついてくるのが鬱陶しかったため、この機能をつけました。Firefoxではコピペしたい時は、プレーンテキストに切り替えてからコピペしましょう。</ins></li>
<li><ins datetime="2008-04-05">2008年4月5日 - 0.1.1にアップデート<br />
WinIEで&amp;（アンパサンド）の変換処理がおかしかった点を修正しました。</ins></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://likealunatic.jp/2008/04/04_linenumberwriter.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScriptのオブジェクトシステムについての、現時点での私の理解</title>
		<link>http://likealunatic.jp/2008/02/06_jsobject.php</link>
		<comments>http://likealunatic.jp/2008/02/06_jsobject.php#comments</comments>
		<pubDate>Wed, 06 Feb 2008 06:27:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://likealunatic.jp/wptest/2008/02/javascript%e3%81%ae%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e3%82%b7%e3%82%b9%e3%83%86%e3%83%a0%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6%e3%81%ae%e3%80%81%e7%8f%be%e6%99%82%e7%82%b9%e3%81%a7.php</guid>
		<description><![CDATA[・JavaScriptは全てのものをオブジェクトで表現できる
・プロパティ
・コンストラクタとインスタンス
]]></description>
			<content:encoded><![CDATA[<div class="section">
<h3>JavaScriptでは全てのデータをオブジェクトで表現できる</h3>
<p>通常はリテラル（スクリプト文中に直接データを書き込んだもの）で表現するデータを、JavaScriptではオブジェクトとしても表現できるようになっています。（厳密にはリテラルで書いたデータとオブジェクトで書いたデータは異なるものですが、その説明は省略）</p>
<table summary="リテラルで表現した場合と、オブジェクトとして表現した場合の比較" class="data-table">
<caption>リテラルで表現した場合と、オブジェクトとして表現した場合の比較</caption>
<thead>
<tr>
<td>&nbsp;</td>
<td>リテラルで表現した場合</td>
<td>オブジェクトとして表現した場合</td>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">数値</th>
<td><code>100</code></td>
<td><code>new Number(100)</code></td>
</tr>
<tr>
<th scope="row">文字列</th>
<td><code>"fuga"</code></td>
<td><code>new String("fuga")</code></td>
</tr>
<tr>
<th scope="row">真偽値</th>
<td><code>true</code></td>
<td><code>new Boolean(true)</code></td>
</tr>
<tr>
<th scope="row">配列</th>
<td><code>["foo","bar"]</code></td>
<td><code>new Array("foo","bar")</code></td>
</tr>
<tr>
<th scope="row">正規表現</th>
<td><code>/fuga/</code></td>
<td><code>new RegExp("fuga")</code></td>
</tr>
<tr>
<th scope="row">オブジェクト</th>
<td><code>{}</code></td>
<td><code>new Object()</code></td>
</tr>
<tr>
<th scope="row">関数</th>
<td><code>function(foo) {alert(foo)}</code></td>
<td><code>new Function("foo","alert(foo)")</code></td>
</tr>
</tbody>
</table>
</div>
<div class="section">
<h3>プロパティについて</h3>
<p>オブジェクトはその内部にプロパティを持つことができます。オブジェクト名とプロパティ名をドットで繋げることプロパティを呼び出せます。<br />
例えば Array オブジェクトは length というプロパティを持ち、<code>オブジェクト名.length</code>とすることで、この配列オブジェクトの持つ要素の数を取り出すことができます。</p>
<pre><code>var hoge = new Array("foo","bar");
alert(hoge.length) // 2 が表示される</code></pre>
<p>length のようなものは Array オブジェクトに最初から組み込まれているプロパティなので、特に自分で定義しなくてもいきなり使うことができます。もちろん自分でプロパティを作ることもできます。</p>
<p>プロパティを作るには、作成したオブジェクトに .（ドット）を付けてプロパティを定義します。</p>
<pre><code>var hoge = {};
hoge.x = 100;
alert(hoge.x); // 100 が表示される</code></pre>
<p>もしくは、オブジェクトを作成する際にオブジェクトリテラル形式で定義します。</p>
<pre><code>var fuga = {x: 100, y: 50}
alert(fuga.x + fuga.y); // 150 が表示される</code></pre>
</div>
<div class="section">
<h3>コンストラクタとインスタンス</h3>
<p>「オブジェクトで表現した」場合、<code>new XXX()</code>という文になりますがこれは<code>XXX()</code>というコンストラクタから新たなオブジェクトを作る、という意味となります。コンストラクタとは新たなオブジェクトを作る雛形のようなものであり、コンストラクタから作られたオブジェクトをインスタンスと呼びます。</p>
<p>JavaScriptでは関数をコンストラクタとして使うことができます。関数を定義する際、<code>this.XXX</code>という書き方でプロパティを定義しておくと、そのプロパティはインスタンスにも引き継がれます。</p>
<pre><code>// hoge()コンストラクタを作成
// hoge()のプロパティとして x=100 を定義
function hoge() {this.x = 100;}
// hoge()コンストラクタからfugaオブジェクトを作る
// fugaオブジェクトはhoge()コンストラクタのインスタンスとなる
var fuga = new hoge()
// hoge()コンストラクタから x=100 プロパティが
// 継承されているので 100 が表示される
alert(fuga.x)</code></pre>
</div>
<p>今回はこの辺までで。<br />
prototypeチェーンについてはまだ勉強中・・・。</p>

<span id="more-41"></span>
<p>JavaScriptがあんまりおもしろいので、昨年秋に『<a href="http://www.amazon.co.jp/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.co.jp%2FJavaScript-%25E7%25AC%25AC5%25E7%2589%2588-David-Flanagan%2Fdp%2F4873113296%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1202277515%26sr%3D1-2&amp;tag=likealunatic-22&amp;linkCode=ur2&amp;camp=247&amp;creative=1211">JavaScript 第5版</a><img src="http://www.assoc-amazon.jp/e/ir?t=likealunatic-22&amp;l=ur2&amp;o=9" width="1" height="1"alt="" />』（通称「サイ本」）を買いました。ちまちま読んではいるのですがいまだに三分の一程度しか目を通せていない状況だったりします。</p>
<p><a href="http://hamashun.com/">hamashun.com</a>の中の人（※）が、<a href="http://d.hatena.ne.jp/hama_shun/">プログラム勉強ブログと題してはてなダイアリーを書いてらっしゃる</a>のを見て、私も何かアウトプットしなくてはならない気分になり、この記事を書いてみました。もし内容に誤りを発見しましたら、お気軽にコメントやブックマークコメントなどで馬鹿にしていただけるとありがたいです。</p>
<p>この記事を書くにあたってのソースは、サイ本と『<a href="http://www.amazon.co.jp/gp/redirect.html?ie=UTF8&amp;location=http%3A%2F%2Fwww.amazon.co.jp%2F%25E5%2585%25A5%25E9%2596%2580Ajax-%25E5%25A2%2597%25E8%25A3%259C%25E6%2594%25B9%25E8%25A8%2582%25E7%2589%2588-%25E9%25AB%2598%25E6%25A9%258B%25E7%2599%25BB%25E5%258F%25B2%25E6%259C%2597%2Fdp%2F4797336242%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1202276985%26sr%3D1-2&amp;tag=likealunatic-22&amp;linkCode=ur2&amp;camp=247&amp;creative=1211">Ajax入門</a><img src="http://www.assoc-amazon.jp/e/ir?t=likealunatic-22&amp;l=ur2&amp;o=9" width="1" height="1" alt="" />』あたりです。最初、『Ajax入門』を読んだ時はかなりちんぷんかんぷんで「入門とか書いてあるクセに難しい本」という印象でした。しかしサイ本を読んである程度勉強してからあらためて読み直したら、内容が理解できて、本の印象が全く変わって驚きました。まぁこちらも、隅から隅まで読んではいないのですが・・・。何にしろ、まだ勉強中です！</p>
<p>※<span class="memo">最近私はこの方を勝手にライバル視しています（謎）</span></p>
]]></content:encoded>
			<wfw:commentRss>http://likealunatic.jp/2008/02/06_jsobject.php/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
