<?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>Snippet-Editor.com &#187; JavaScript</title>
	<atom:link href="http://snippet-editor.com/category/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://snippet-editor.com</link>
	<description>仕事で使えるHTML5・CSS3などのナイスなアイデアを収集しています。（一緒に投稿していただける方を募集中です）</description>
	<lastBuildDate>Sun, 10 Jul 2011 02:57:44 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>import.cssならぬ、import.js</title>
		<link>http://snippet-editor.com/2010/09/import-js.html</link>
		<comments>http://snippet-editor.com/2010/09/import-js.html#comments</comments>
		<pubDate>Thu, 23 Sep 2010 05:59:19 +0000</pubDate>
		<dc:creator>tomohiro_kasuga</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[import.js]]></category>

		<guid isPermaLink="false">http://snippet-editor.com/?p=1249</guid>
		<description><![CDATA[WordPressではあまりメリットがありませんが、静的生成をするCMSを使っている場合、JSの追加／削除が瞬時に反映されるようになります。]]></description>
			<content:encoded><![CDATA[<pre class="brush: jscript;">
function importJS() {
    if (! new Array().push) return false;
    var scripts = new Array(
         'YOUR-PATH/YOUR-SCRIPT1.js'
        ,'YOUR-PATH/YOUR-SCRIPT2.js'
        ,'YOUR-PATH/YOUR-SCRIPT3.js'
    );
    for (var i=0; i&lt;scripts.length; i++) {
        document.write('&lt;script type=&quot;text/javascript&quot; src=&quot;' +scripts[i] +'&quot;&gt;&lt;\/script&gt;');
    }
}
importJS();
</pre>
<p><span id="more-1249"></span></p>
<p>上の内容をimport.jsの名前で保存し、HTML側には下の一行を追記します。</p>
<pre class="brush: xml;">
&lt;script type=&quot;text/javascript&quot; src=&quot;YOUR-PATH/import.js&quot;&gt;&lt;/script&gt;
</pre>
<p>WordPressではあまりメリットがありませんが、静的生成を必要とするCMSを使っている場合、JSの追加／削除が瞬時に反映されるようになります。</p>
]]></content:encoded>
			<wfw:commentRss>http://snippet-editor.com/2010/09/import-js.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhoneサイトに行きたいか、まずユーザーに尋ねる</title>
		<link>http://snippet-editor.com/2010/09/iphone-visitors-prompt.html</link>
		<comments>http://snippet-editor.com/2010/09/iphone-visitors-prompt.html#comments</comments>
		<pubDate>Thu, 16 Sep 2010 20:29:46 +0000</pubDate>
		<dc:creator>tomohiro_kasuga</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[iPhoneサイト]]></category>

		<guid isPermaLink="false">http://snippet-editor.com/?p=979</guid>
		<description><![CDATA[iPhoneサイトを用意する案件の場合、ユーザーがあえてPCサイトを見たいと思った場合にどう誘導するか問題になりますが、一つのソリューションをご紹介。]]></description>
			<content:encoded><![CDATA[<pre class="brush: jscript;">
function iPhoneAlert() {
	if((navigator.userAgent.match(/iPhone/i))||(navigator.userAgent.match(/iPod/i))){
		var question = confirm(”Would you like to view the iPhone-optimized version of our site?”)
		if (question){
			window.location = “http://lite.iphonemicrosites.com/home.html”;
		}else{
			window.location = “http://iphonemicrosites.com/mainsite.html”;
		}
	}
}
</pre>
<p><span id="more-979"></span></p>
<p><a href="http://www.iphonemicrosites.com/tutorials/detect-and-prompt-iphone-visitors/" target="_blank">iPhone Microsites</a>より、この発想はなかったJavaScriptが紹介されていました。</p>
<p>iPhoneに最適化したサイトを作った場合、とりあえずiPhoneユーザーを強制的にそちらへ移動させて、通常版のPCサイトを希望するユーザーには別のアクションを起こしてもらう、というのが一般的な手法ですが、このスクリプトはまず先に尋ねてしまうというもの。</p>
<p>通常のサイトではいきなりアラートが飛び出るなんて考えられないことですが、iPhoneの場合はおなじみのPush Notificationに見えるので違和感がほとんどありません。</p>
<p>HTML側にはbodyにonloadを追加します。</p>
<pre class="brush: xml;">
&lt;body onload=&quot;iPhoneAlert();&quot;&gt;
</pre>
<p class="button"><a href="http://media.snippet-editor.com/2010/09/iphone-visitors-prompt.html"><span>テストページはこちら</span></a></p>
<p class="note">iPhoneまたはiPod touchからアクセスする必要があります。</p>
<p>実際に使用する場合は、トップページだけにしておいた方がいいでしょう。</p>
]]></content:encoded>
			<wfw:commentRss>http://snippet-editor.com/2010/09/iphone-visitors-prompt.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ページ内の印刷ボタンが押された時だけprint.cssを適応する</title>
		<link>http://snippet-editor.com/2010/08/2way-print-css.html</link>
		<comments>http://snippet-editor.com/2010/08/2way-print-css.html#comments</comments>
		<pubDate>Tue, 31 Aug 2010 09:51:03 +0000</pubDate>
		<dc:creator>tomohiro_kasuga</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[print.css]]></category>
		<category><![CDATA[印刷]]></category>

		<guid isPermaLink="false">http://snippet-editor.com/?p=549</guid>
		<description><![CDATA[ユーザーはWebサイトが見たまま印刷されることを望む場合もあれば、サイドバーなど不要な部分はそぎ落として印刷したいと望む場合もあります。今回は、どちらにも対応できる方法をご紹介します。]]></description>
			<content:encoded><![CDATA[<pre class="brush: jscript;">
$(document).ready(function(){
	$(&quot;.printer&quot;).click(function(){
		$(&quot;body&quot;).addClass(&quot;print&quot;);
		window.print();
		var timeout = setTimeout(function(){
			$(&quot;body&quot;).removeClass(&quot;print&quot;);
		}, 1000);
		return false;
	});
});
</pre>
<p><span id="more-549"></span></p>
<p>Webページを印刷するとき、画面に表示されているそのままを印刷したいと思うか、印刷用に整形された状態を欲しいと思うかは、ユーザーによってまちまちです。</p>
<p>上のjQueryプラグインを使うことで、ブラウザのメニューバーから「印刷」を選んだ時と、ページ上の印刷ボタンから印刷を実行した時で、別々の出力結果を得ることが出来るようになります。つまり、前者は見たままに、後者は整形されて印刷されます<sup>[<a href="#note">1</a>]</sup>。</p>
<ol class="note" id="note">
<li>この記事の解説内容は、画面表示と印刷時のスタイルが元々分かれていないサイトを前提としてあります。</li>
</ol>
<h3>準備</h3>
<p>まず、print.cssを用意します。</p>
<pre class="brush: css;">
@media print {
body.print div.header-search,
body.print div.nav,
body.print div.aside { display: none; }

body.print div.header,
body.print div.contents,
body.print div.article,
body.print div.footer { clear: both; width: auto; height: auto; float: none; background: none; border: none; padding-left: 0; padding-right: 0; margin-left: 0; margin-right: 0; position: static; }

body.print { font-size: 9pt; background: none; }
body.print div.body { width: 500px; margin: 0 auto; }
}
</pre>
<p>print.cssの内容はサイトごとに大きく異なるので、上のをそのまま流用することはできませんが、要するに、</p>
<ul>
<li>印刷しないパートをdisplay: none;で消す</li>
<li>印刷するパートから不要なfloatなどを解除</li>
<li>白い紙に印刷されることを踏まえて文字や背景などを調整</li>
</ul>
<p>しておきます。ここまでは普通のprint.cssのやり方です。ここからさらに、</p>
<ul>
<li>print.cssの内容全体を@media print { }でくくる</li>
<li>print.cssの各行の先頭にbody.printを追加する</li>
</ul>
<p>この2点を加えることで、ここで記述した内容は画面表示には一切影響を与えなくなり、且つ、body classに&quot;print&quot;が付いていない場合はスタイルが適応されることもなくなります。</p>
<h3>ここからが本番</h3>
<p>さて、冒頭のスクリプトに戻って、何が行われるのか確認してみたいと思います。</p>
<pre class="brush: jscript;">
$(document).ready(function(){
	$(&quot;.printer&quot;).click(function(){             // 印刷ボタンが押されたら
		$(&quot;body&quot;).addClass(&quot;print&quot;);            // body classに&quot;print&quot;を追加
		window.print();                         // 印刷を実行
		var timeout = setTimeout(function(){
			$(&quot;body&quot;).removeClass(&quot;print&quot;);     // body classから&quot;print&quot;を削除
		}, 1000);
		return false;                           // 終了
	});
});
</pre>
<p>つまり、「印刷ボタン」を押した直後だけprint.cssが有効となり、次にメニューバーから「印刷」を選んだとしても、その時は通常の見栄えで印刷されることになります。</p>
<p class="button"><a href="#null" class="printer scroll-off"><span>印刷ボタンのテスト</span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://snippet-editor.com/2010/08/2way-print-css.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JavaScriptがオフになっている時に役立つJavaScript</title>
		<link>http://snippet-editor.com/2010/08/noscript-detector.html</link>
		<comments>http://snippet-editor.com/2010/08/noscript-detector.html#comments</comments>
		<pubDate>Tue, 24 Aug 2010 02:45:48 +0000</pubDate>
		<dc:creator>tomohiro_kasuga</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[noscript]]></category>

		<guid isPermaLink="false">http://snippet-editor.com/?p=71</guid>
		<description><![CDATA[JavaScriptを使うことが当たり前になっていますが、JavaScriptをオフにする人もまだいます。JavaScriptがオフにされても恥ずかしくないように、オフのときだけスタイルを当てましょう。]]></description>
			<content:encoded><![CDATA[<pre class="brush: jscript;">
$(document).ready(function(){
	$(&quot;body&quot;).removeClass(&quot;noscript&quot;);
});
</pre>
<p><span id="more-71"></span></p>
<p>このjQueryプラグインを使うと、例えばJavaScriptがオフになっている時だけプルダウンメニューをCSSで動作させたり、AJAX部分のレイアウトの乱れをCSSで隠したりすることができます。</p>
<p>具体的には、bodyタグにclass=&quot;noscript&quot;を記述しておくと、JavaScriptがオフの時だけbody.noscriptで始まるスタイルが適応できるようになります。</p>
<pre class="brush: xml; highlight: [14,19];">
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset=&quot;utf-8&quot;&gt;
	&lt;title&gt;noScript Detector&lt;/title&gt;
	&lt;script src=&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js&quot;&gt;&lt;/script&gt;
	&lt;script&gt;
		$(document).ready(function(){
			$(&quot;body&quot;).removeClass(&quot;noscript&quot;);
		});
	&lt;/script&gt;
	&lt;style&gt;
		body { background-color: white; }
		body.noscript { background-color: pink; }
		li.trigger ul { display: none; }
		body.noscript li.trigger:hover ul { display: block; }
	&lt;/style&gt;
&lt;/head&gt;
&lt;body class=&quot;noscript&quot;&gt;
	&lt;ul&gt;
		&lt;li class=&quot;trigger&quot;&gt;Mouse Hover
			&lt;ul&gt;
				&lt;li&gt;Item 1&lt;/li&gt;
				&lt;li&gt;Item 2&lt;/li&gt;
				&lt;li&gt;Item 3&lt;/li&gt;
			&lt;/ul&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
	&lt;script&gt;
		$(document).ready(function(){
			$(&quot;li.trigger&quot;).hover(function(){
				$(&quot;li.trigger ul&quot;).slideDown(200);
				$(this).parent().hover(function(){}, function(){
				$(&quot;li.trigger ul&quot;).slideUp(400);
				});
			});
		});
	&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p class="button"><a href="http://media.snippet-editor.com/2010/08/noscript-detector.html"><span>デモページはこちら</span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://snippet-editor.com/2010/08/noscript-detector.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

