﻿<?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>Numb. &#187; JavaScript</title>
	<atom:link href="http://wp.graphact.com/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://wp.graphact.com</link>
	<description></description>
	<lastBuildDate>Sun, 08 Apr 2012 18:02:31 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>IE8</title>
		<link>http://wp.graphact.com/2009/03/25/ie8_release/</link>
		<comments>http://wp.graphact.com/2009/03/25/ie8_release/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 08:16:52 +0000</pubDate>
		<dc:creator>hibiki</dc:creator>
				<category><![CDATA[WebCreate]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://wp.graphact.com/?p=968</guid>
		<description><![CDATA[IE8 のことを知るためには以下を一読。 Internet Explorer 8 開発者向け技術概要 MSDN　What’s New in Internet Explorer 8 現時点で Dojo Toolkit が  [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/japan/windows/products/winfamily/ie/function/default.mspx">IE8</a> のことを知るためには以下を一読。</p>
<ul>
<li><a href="http://msdn.microsoft.com/ja-jp/ie/dd550608.aspx">Internet Explorer 8 開発者向け技術概要</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc288472(VS.85).aspx">MSDN　What’s New in Internet Explorer 8</a></li>
</ul>
<p>現時点で <a href="http://www.dojotoolkit.org/">Dojo Toolkit</a> が IE8 で上手く動いていません。次の Dojo の ver UP で直されそうなのでに期待。</p>
<p>ライブラリが動かない等、過去に制作したサイトが崩れたり問題が起きている場合、レンダリングモードを変更して過去の IE 互換レンダリングで表示させておくことが必要。</p>
<p>IE8 にはレンダリングモードが複数あります。詳細は以下のサイトで。</p>
<ul>
<li><a href="http://msdn.microsoft.com/ja-jp/ie/dd550608.aspx#2">2. 実現可能な相互運用性と互換性 &#8211; Internet Explorer 8 開発者向け技術概要</a></li>
</ul>
<p>1 年弱前の記事ですが、こちらも参考になりました。</p>
<ul>
<li><a href="http://www.freesia.org/2008/05/ie83.html">【メモ】IE8の3レンダリングモードのまとめ / KOMOREBI || blog</a></li>
<li><a href="http://blog.summerwind.jp/archives/1182/">SummerWind &#8211; IE8のEmulateIE8/EmulateIE7モード</a></li>
</ul>
<p>ただ、IE8 の互換モードと IE7 は全く同じではないということで、そのあたりも注意が必要ですね。</p>
<ul>
<li><a href="http://journal.mycom.co.jp/news/2009/03/17/004/index.html">IE8互換ビューとIE7はまったく同じではない | エンタープライズ | マイコミジャーナル</a></li>
<li><a href="http://blogs.msdn.com/ie/archive/2009/03/12/site-compatibility-and-ie8.aspx">IEBlog : Site Compatibility and IE8</a></li>
</ul>
<p>正直レンダリングモードが複雑化しすぎている気がします。せっかく「 hasLayout から IE8 で逃れられた！（＝ IE の面倒なモノはなくなった！）」と思ったのになぁ。まだ面倒ですね。<br />
とりあえず、「<a href="http://msdn.microsoft.com/ja-jp/ie/dd550608.aspx">Internet Explorer 8 開発者向け技術概要</a>」を片手にがんばります。</p>
]]></content:encoded>
			<wfw:commentRss>http://wp.graphact.com/2009/03/25/ie8_release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ThickBox から Lightview へ</title>
		<link>http://wp.graphact.com/2008/01/27/120/</link>
		<comments>http://wp.graphact.com/2008/01/27/120/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 03:23:28 +0000</pubDate>
		<dc:creator>hibiki</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WP-plugin]]></category>

		<guid isPermaLink="false">http://www.graphact.com/memo/2008/01/27/182</guid>
		<description><![CDATA[つい先日、「LiteBox から ThickBox に変更」で書いたとおり ThicBox を導入したばかりなのですが、 早くも浮気して Lightview を導入してみちゃいました。 こちらも、画像のサイズによって自動 [...]]]></description>
			<content:encoded><![CDATA[<p>つい先日、「<a href="http://wp.graphact.com/2008/01/16/174">LiteBox から ThickBox に変更</a>」で書いたとおり ThicBox を導入したばかりなのですが、<br />
早くも浮気して Lightview を導入してみちゃいました。</p>
<p>こちらも、画像のサイズによって自動でリサイズして表示してくれます。これはよい！そして Esc キーで閉じてくれます。</p>
<p><a href="http://www.orioa.com/lightview-for-wordpress/">カスタマイズできる Lightview for WordPress at orioa</a> を参考にさせていただきました。</p>
<p>ThickBox が jQuery を利用しているのに対し、Lightview は prototype.js を利用しています。</p>
<p>なにかと prototype.js がほかのプラグインなどで使われていることも多いので、そういった場合には ThickBox より導入しやすいかなと感じました。</p>
<p>prototype.js を使っているサイトで ThickBox を使う場合には競合が起きるので、<br />
そのあたりを考えなくて良いように jQuery 利用サイトなら ThickBox、prototype.js 利用サイトなら Lightview を使うのも良いかもですね。</p>
<p>しかし、IE で見ると記事一覧ページで Lightview 動いてないな～、と気づきました。あれれ :roll: 原因探してみます。</p>
]]></content:encoded>
			<wfw:commentRss>http://wp.graphact.com/2008/01/27/120/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>LiteBox から ThickBox に変更</title>
		<link>http://wp.graphact.com/2008/01/16/117/</link>
		<comments>http://wp.graphact.com/2008/01/16/117/#comments</comments>
		<pubDate>Tue, 15 Jan 2008 18:40:28 +0000</pubDate>
		<dc:creator>hibiki</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WP-plugin]]></category>

		<guid isPermaLink="false">http://www.graphact.com/memo/2008/01/16/174</guid>
		<description><![CDATA[画像表示で使う js を、LiteBox から ThickBox に変えてみました。 ThickBox を他サイトで使ってみて自由度の高さと使い勝手に惹かれ、こちらも変えようかなーという流れです。 ThickBox 3. [...]]]></description>
			<content:encoded><![CDATA[<p>画像表示で使う js を、LiteBox から ThickBox に変えてみました。<br />
ThickBox を他サイトで使ってみて自由度の高さと使い勝手に惹かれ、こちらも変えようかなーという流れです。</p>
<p><a href="http://jquery.com/demo/thickbox/">ThickBox 3.1</a></p>
<p>具体的に変更しようかな～と思ったのは以下の点が気に入ったから。</p>
<ul>
<li>大きい画像を表示した際にリサイズを勝手にしてくれる</li>
<li>画像をクリックして閉じることが可能</li>
<li>画像の外の上下左右どこかをクリックしても閉じることが可能</li>
<li>Esc キーでも閉じることが可能</li>
</ul>
<p>後は画像以外のモノも表示できるので機会があったら使いたい、というのもありました。</p>
<p>それにあわせて、使っている WP プラグインの IImage Browser に少し手を加えました。</p>
<p><span id="more-117"></span></p>
<p>※<a href="http://wp.mmrt-jp.net/plugin-japanization-project/21x/wp21-iimage-browser/">IImage-browser 日本語版 ≪ MMRT daily life</a> さんからダウンロードした、IImage Browser 日本語版 の Default を利用しています。</p>
<p>IImage Browser の、wp-admin 内に入れる iimage-browser.php 内 71 行目付近を以下のように変更。</p>
<pre class="brush: php; first-line: 71;  auto-links: false;">
$ib_custom_code_full = '&lt;a href=&quot;%src&quot; title=&quot;%title&quot; class=&quot;lightview&quot;&gt;&lt;img src=&quot;%tsrc&quot; alt=&quot;%title&quot; width=&quot;%twidth&quot; height=&quot;%theight&quot; /&gt;&lt;/a&gt;';
$ib_custom_code_thumb = '&lt;a href=&quot;%src&quot; title=&quot;%title&quot; class=&quot;lightview&quot; rel=&quot;&quot;&gt;&lt;img src=&quot;%tsrc&quot; alt=&quot;%title&quot; width=&quot;%twidth&quot; height=&quot;%theight&quot; /&gt;&lt;/a&gt;';
</pre>
<p>これで、ThickBox を使った画像の投稿が楽になりました。<br />
過去の画像は、LiteBox を切ってしまったのでそのままページ移動で表示されるようになっています。</p>
<p>また、ThickBox は jQuery を使用しており prototype.js と競合がおきます。<br />
これへの対処方法は以下のサイトを参考にさせていただきました。</p>
<ul>
<li><a href="http://blog.2dpa.net/2007/05/jqueryprototypejs.html">二次元汚染域 &#8211; jQueryとprototype.jsの共存させる方法</a></li>
<li><a href="http://www.tatamilab.jp/rnd/archives/000332.html">prototype.jsとThickBox(jQuery)がコンフリクト｜blog｜たたみラボ</a></li>
<li><a href="http://yusukebe.com/tech/archives/20070401/135147.html">prototype.jsとThickBox(jQuery)のコンフリクトを防ぐ方法 (Yusukebe::Tech)</a></li>
<li><a href="http://red-treasure.com/report/?p=82">コスミー報告書[社外秘] &#8211; jQueryトリビアルメモ２　（prototype.jsとかと共存、jQuery.jsの複数回読み込みについて）</a></li>
</ul>
<p>具体的には、以下のようにヘッダー内に書き、jQuery を利用している .js 内の 「$」を「jQuery」に置換することで共存可能になりました。</p>
<pre class="brush: xml; auto-links: false;">
&lt;script type=&quot;text/javascript&quot; src=&quot;jquery.js&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
&lt;!--
	jQuery.noConflict();
//--&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;prototype.js&quot;&gt;&lt;/script&gt;
</pre>
<p>このとき読み込ませる順番は、jquery.js を最初に、次に jQuery.noConflict(); の部分、最後に prototype.js 。<br />
この順番でないと上手く動かないスクリプトが出てきたり、エラーが出たりと何かと問題があったので注意。</p>
]]></content:encoded>
			<wfw:commentRss>http://wp.graphact.com/2008/01/16/117/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>新規ウィンドウを開く手段を Valid と両立させる考察</title>
		<link>http://wp.graphact.com/2007/06/10/87/</link>
		<comments>http://wp.graphact.com/2007/06/10/87/#comments</comments>
		<pubDate>Sun, 10 Jun 2007 08:43:21 +0000</pubDate>
		<dc:creator>hibiki</dc:creator>
				<category><![CDATA[WebCreate]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.graphact.com/memo/2007/06/10/138</guid>
		<description><![CDATA[以前に書いた Numb. &#8211; _blank を使わない新規ウィンドウの開き方 の続きにあたる記事です。一応、もう一度おさらいしてみます。 06/13 追記： 大事な部分を丸ごと書き忘れていることに気付きました [...]]]></description>
			<content:encoded><![CDATA[<p>以前に書いた<br />
<a href="http://wp.graphact.com/2006/03/22/29" title="Numb. - _blank を使わない新規ウィンドウの開き方">Numb. &#8211; _blank を使わない新規ウィンドウの開き方</a><br />
の続きにあたる記事です。一応、もう一度おさらいしてみます。</p>
<p><ins datetime="2006-06-13T06:41:46+00:00">06/13 追記：<br />
大事な部分を丸ごと書き忘れていることに気付きました orz<br />
javascript 関連の部分を追記いたしました。<br />
</ins></p>
<p>新規ウィンドウを開かせる手段を実装したい、という場合は以下の 2 種類が有名だと思います。</p>
<ul>
<li>a に target=&#8221;_blank&#8221; を指定する</li>
<li>javascript で設定する</li>
</ul>
<p>しかし「ウィンドウを新たに開くかどうか」はユーザーが決めるべきことなので、作り手が決め手はいけない、という話もあります。<br />
そのためか、XHTML 1.1 や XHTML Basic では target=&#8221;_blank&#8221; という書き方は準拠していない、とされ NG になってしまいます。<br />
「マークアップ言語である HTML で、ウィンドウ操作をする」という点も問題なのだと思います。マークアップ目的以外になるので。</p>
<p>でもユーザーの中にも新規ウィンドウを開く手段を実装しておいて欲しいという人もいます。<br />
いやいや余計なお世話だから、こっちに決めさせてくれ、そんなことは実装しておかないでくれ、という人もいます。<br />
実装して欲しい・欲しくない、という人が両方いる…ということで、<em>じゃあ両方のリンクを制作</em>しておけばいいんじゃ！と思いまして。今回はそんな方向でやってみました。<br />
<span id="more-87"></span></p>
<h2>ポイント</h2>
<ul>
<li>
rel 属性は XHTML1.0 Transitional では OK 。HTML4.0 では rel に指定できる値が決まっている。rel を使うのならば、XHTML1.0 Transitional で書いておくようにする。今回はより柔軟に対応するために、class 属性を使用。
</li>
<li>
マークアップ言語である HTML でウィンドウ操作はしない（つまり _blank は使用しない）。新規ウィンドウを開く部分は javascript で window.open を使って実装。
</li>
</ul>
<p>実装方法は次のような形。</p>
<h2>見本</h2>
<p><a href="http://wp.graphact.com" title="Numb.">Numb.</a><a href="http://wp.graphact.com" title="[Numb.]を新しいウィンドウで開く" class="external"><img src="http://wp.graphact.com/wp-content/uploads/icons/link-icon_external_01.gif" alt="" /></a></p>
<p>テキスト部分のリンクをクリックすると同じウィンドウで開き、矢印の画像部分のリンクをクリックすると新しいウィンドウで開きます。</p>
<p>※現在違う方法で実装を始めたため、この見本では新規ウィンドウが開きません。</p>
<h2>実装方法</h2>
<ul>
<li>) か b ) どちらかの方法を選び、javascript を保存。HTML に外部ファイルとしてこれを読み込ませる。</li>
<li>た目を整えるための、style.css にコレ用の CSS を追記。</li>
<li>ウィンドウを開くリンクとしておきたい a タグに `class=&#8221;external&#8221;` をつける。<br />※ウィンドウを開かないリンクも一緒に記述します。
</li>
<li>おまけ。 Firefox の方は Copy+ を使って簡単に記述できるようにすると便利です。ここは任意。</li>
</ul>
<h2>1. javascript</h2>
<p>prototype.js を利用する場合と、利用しない場合では少しだけ javascript が違います。<br />
もし Litebox 等、body に onload を書くものを利用している場合は prototype.js を利用するほうを選んでください。</p>
<p>参考：<a href="http://blog.webcreativepark.net/2006/06/27-231623.html" title="prototype.jsを使ってみる 2-Event.observe[to-R]">prototype.jsを使ってみる 2-Event.observe[to-R]</a></p>
<h3>a ) prototype.js を利用しない場合</h3>
<pre class="brush: js; auto-links: false;">
function externalLinks() {
	if (! document.getElementsByTagName ) return;
	var anchors = document.getElementsByTagName(&quot;a&quot;);
	for (var i=0; i&lt;anchors .length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute(&quot;href&quot;) &amp;&amp; anchor.getAttribute(&quot;class&quot;) == &quot;external&quot;) {
			anchor.onclick = function(event){return newWindow(this, event);}
			anchor.onkeypress = function(event){return newWindow(this, event);}
		}
	}
}
function newWindow(anchor, event){
	var keyCode;
	if (event &amp;&amp; event.type == 'keypress') {
		if (event.keyCode)
		keyCode = event.keyCode;
		else if (event.which)
		keyCode = event.which;
		// 13 == Return key. 32 == space key
		if (keyCode != 13 &amp;&amp; keyCode != 32)
		return true;
	}
	return !window.open(anchor);
}
window.onload = externalLinks;
</pre>
<p>上記 javascript を「externalLink.js」と名前をつけて保存。<br />
以下の 1 行を HTML の header 内に書く。</p>
<pre class="brush: xml; auto-links: false;">
&lt;script type=&quot;text/javascript&quot; src=&quot;/path/externalLink.js&quot;&gt;
</pre>
<p>上記の方法は onload を最後の 1 行に書いています。<br />
onload イベントは 1 ページに 1 回しか使えないため、もし onload を他のスクリプト（ Litebox など）で使用している場合、この記述方法では実装できません。<br />
そんな方は b ) prototype.js を利用する場合、のほうを使ってください。</p>
<h3>b ) prototype.js を利用する場合の javascript</h3>
<pre class="brush: js; auto-links: false;">
function externalLinks() {
	if (! document.getElementsByTagName ) return;
	var anchors = document.getElementsByTagName(&quot;a&quot;);
	for (var i=0; i&lt;/anchors&gt;&lt;anchors .length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute(&quot;href&quot;) &amp;&amp; anchor.getAttribute(&quot;class&quot;) == &quot;external&quot;) {
			anchor.onclick = function(event){return newWindow(this, event);}
			anchor.onkeypress = function(event){return newWindow(this, event);}
		}
	}
}
function newWindow(anchor, event){
	var keyCode;
	if (event &amp;&amp; event.type == 'keypress') {
		if (event.keyCode)
		keyCode = event.keyCode;
		else if (event.which)
		keyCode = event.which;
		// 13 == Return key. 32 == space key
		if (keyCode != 13 &amp;&amp; keyCode != 32)
		return true;
	}
	return !window.open(anchor);
}
Event.observe(window,'load', externalLinks, false);
</pre>
<p>上記 javascript を「externalLink.js」と名前をつけて保存。<br />
以下の 2 行を HTML の header 内に書く。</p>
<pre class="brush: xml; auto-links: false;">
&lt;script type=&quot;text/javascript&quot; src=&quot;/path/prototype.js&quot;&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;/path/externalLink.js&quot;&gt;&lt;/script&gt;
</pre>
<p>javascript の最後の 1 行、`Event.observe(window,&#8217;load&#8217;, externalLinks, false);` は prototype.js を利用しています。<br />
onload で読み込むものが他にある場合は、こちらの javascript を利用してください。</p>
<p>prototype.js も読み込む必要がありますが、よく使われているため「すでに prototype 使ってるよ」という方もいると思います。<br />
その場合は再度読み込ませなくても OK ですので、externalLink.js を読み込ませる分だけ追記してください。</p>
<h2>2. CSS</h2>
<p>WP の使用しているテーマの style.css に以下の CSS を追記します。</p>
<pre class="brush: css; auto-links: false;">
/* for externalLink */
a.external {
	margin: 0 5px 0 3px;
}
a.external img {
	vertical-align: middle;
	border: none!important;
}
</pre>
<p>a.external の margin 設定は、画像の左右の余白設定です。<br />
margin: 上 右 下 左;<br />
という感じですので、余白を調整したい場合は変えたい場所の数字を変更してください。</p>
<p>a.external img のほうの設定は特に弄らなくて大丈夫だと思います。</p>
<h2>3. XHTML</h2>
<pre class="brush: xml; auto-links: false;">
&lt;a href=&quot;http://www.google.co.jp/&quot; title=&quot;Google&quot;&gt;Google&lt;/a&gt;
&lt;a href=&quot;http://www.google.co.jp/&quot; title=&quot;[Google]を新しいウィンドウで開く&quot; class=&quot;external&quot;&gt;
&lt;img src=&quot;http://hogehoge/hogehoge.gif&quot; alt=&quot;[Google]を新しいウィンドウで開く&quot; /&gt;&lt;/a&gt;
</pre>
<p>このような形で書いています。画像のパスは自分で用意した画像ファイルのパスに適宜変更してください。<br />
上では見やすくするために改行を入れてますが、実際には改行はなくて OK です。</p>
<p>アイコン探し参考：<br />
<a href="http://gigazine.net/index.php?/news/comments/20061023_mini_icon/" title="いろいろな用途で使えるミニアイコンあれこれ - GIGAZINE"><br />
いろいろな用途で使えるミニアイコンあれこれ &#8211; GIGAZINE</a></p>
<h2>この方法の良い点</h2>
<ul>
<li>Valid である。</li>
<li>ページを新しいウィンドウで開くか、そのままのウィンドウで開くか、この両方を提供できる。</li>
</ul>
<h2>この方法の悪い点</h2>
<ul>
<li>リンク 1 つにつき 2 つ分のリンクを書くことになるので、ソースが長くなる。</li>
<li>これに対応した HTML をその都度書くのが面倒。</li>
</ul>
<p>この悪い点の 2 つめ、書くことが面倒なのが最大の問題点だと思っています。<br />
そんなわけで、Firefox + CopyURL+ で簡単にタグを作れるようにしました。</p>
<h2>CopyURL+ でこの方法用のタグを生成</h2>
<p>CopyURL+ の使い方や細かい点は「<a href="http://wp.graphact.com/2007/01/03/115" title="Numb. - 「Copy URL+」+「MozShot」"><br />
Numb. &#8211; 「Copy URL+」+「MozShot」</a>」という記事に書いたので、こちらを参考になさってください。</p>
<p>Copy URL+ 用 user.js</p>
<pre class="brush: js; auto-links: false;">
user_pref('copyurlplus.menus.n.label','Create URL&amp;Title/externalLink');
user_pref('copyurlplus.menus.n.copy','&lt;a href=&quot;%URL%&quot; title=&quot;%TITLE%&quot;&gt;%TITLE%&lt;/a&gt;&lt;a href=&quot;%URL%&quot; title=&quot;[%TITLE%]を新しいウィンドウで開く&quot; class=&quot;external&quot;&gt;&lt;img src=&quot;http://hogehoge/hogehoge.gif&quot; alt=&quot;[%TITLE%]を新しいウィンドウで開く&quot; /&gt;&lt;/a&gt;
');
</pre>
<p>※user_pref(&#8216;copyurlplus.menus.n.・・・の、n の部分は user.js 内でかぶらないように数字をつけます。<br />
これのみなら 1 、他にすでに 1～3 まで使ってあるなら 4 、というかんじに。</p>
<p>※http://hogehoge/hogehoge.gif は自分の用意した画像ファイルのパスに置き換えてください。</p>
<p>以上です。もしよろしければお試しください :grin:</p>
<p><strong>07/07/30 追記</strong><br />
javascript で新しいウィンドウを開くためのアイコンを自動で追加する方法に現在は至りました。<br />
<a href="http://wp.graphact.com/2007/07/15/98" title="リンクに、新しいウィンドウで開くためのアイコンを自動で追加(Wpプラグイン) - Numb.">リンクに、新しいウィンドウで開くためのアイコンを自動で追加(Wpプラグイン) &#8211; Numb.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wp.graphact.com/2007/06/10/87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS ON⇔OFF bookmarklet</title>
		<link>http://wp.graphact.com/2007/02/26/73/</link>
		<comments>http://wp.graphact.com/2007/02/26/73/#comments</comments>
		<pubDate>Sun, 25 Feb 2007 22:53:10 +0000</pubDate>
		<dc:creator>hibiki</dc:creator>
				<category><![CDATA[WebCreate]]></category>
		<category><![CDATA[Bookmarklet]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.graphact.com/memo/2007/02/26/123</guid>
		<description><![CDATA[Bookmarklet &#8211; パソコン遊戯 こちらで紹介されていた Bookmarklet をよく使っています。 Bookmarklet とは、ブックマークに入れて使う javascript です。 リンクの上 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pasokon-yugi.cool.ne.jp/bookmarklet/" title="Bookmarklet - パソコン遊戯">Bookmarklet &#8211; パソコン遊戯</a></p>
<p>こちらで紹介されていた Bookmarklet をよく使っています。<br />
Bookmarklet とは、ブックマークに入れて使う javascript です。<br />
リンクの上で右クリックをしてお気に入りに登録すれば OK です。</p>
<p>閲覧補助 > CSS ON⇔OFF<br />
これをブックマークに入れておくと、制作時にものすごい便利でした。<br />
作者様、ありがとうございます・・！</p>
<p><a href="javascript:(function(){var l,i,x,s,j,y;l=document.getElementsByTagName('link');for(i=0;i<l.length;i++){x=l.item(i);if(x.rel.match(/^stylesheet$/i)){if(x.disabled==false)x.disabled=true;else if(x.disabled==true)x.disabled=false;}}s=document.getElementsByTagName('style');for(j=0;j<s.length;j++){y=s.item(j);if(y.disabled==false)y.disabled=true;else if(y.disabled==true)y.disabled=false;}})()">CSS ON⇔OFF</a><br />
このリンクをブックマークに登録すれば OK。リンクバーにドラッグアンドドロップでもいけます。</p>
<p>それにしても1ヶ月更新になってしまった。<br />
最近は仕事に趣味にと忙しい毎日なのであります。</p>
]]></content:encoded>
			<wfw:commentRss>http://wp.graphact.com/2007/02/26/73/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>_blank を使わない新規ウィンドウの開き方</title>
		<link>http://wp.graphact.com/2006/03/22/29/</link>
		<comments>http://wp.graphact.com/2006/03/22/29/#comments</comments>
		<pubDate>Wed, 22 Mar 2006 14:37:19 +0000</pubDate>
		<dc:creator>hibiki</dc:creator>
				<category><![CDATA[WebCreate]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.graphact.com/memo/2006/03/22/24</guid>
		<description><![CDATA[リンク先を新規ウィンドウで開くやり方と Markdown との兼ね合いについて書きましたが、今日はその続編です。いくつか気になる点があったので、調べてみました。 気になっていたのは、この2点。 先日の javascrip [...]]]></description>
			<content:encoded><![CDATA[<p>リンク先を新規ウィンドウで開くやり方と Markdown との兼ね合いについて書きましたが、今日はその続編です。いくつか気になる点があったので、調べてみました。<br />
気になっていたのは、この2点。</p>
<ul>
<li>先日の javascript では、結局 _blank を後付けで指定しているので、よくないのかも。</li>
<li>
そもそも _blank が推奨されなくなったのは、ユーザーがウィンドウを開くかどうかは決めることであり、サイトの運営者が決めることではない。ということから、らしい。それに沿ってないんじゃないか。
</li>
</ul>
<p>丁度同じようなことを取り上げている方のブログを見つけました。</p>
<p><a href="http://hori-uchi.com/archives/000424.html">hori-uchi.com: _blankを使わないで別ウィンドウを開くにはrel=&#8221;external&#8221;を使うのが美しいと思う。</a></p>
<p>コメント部分含め、参考にさせていただきつつ整理。</p>
<p><span id="more-29"></span></p>
<h2>問題点、注意点</h2>
<ul>
<li>rel 属性は XHTML1.0 Transitional では OK 。 HTML4.0 では rel に指定できる値が決まっている。rel を使うのならば、XHTML1.0 Transitional で書いておくと良さそう。</li>
<li>javascript を用いるとしても、 _blank 指定を後からつけるのでは根本的な解決に至らないので、やはり window.open を使うほうがよい。その場合、javascript がオフであっても困らない対策も必要。</li>
<li>いずれ、rel を使用しないでおくようにしなければならないのなら、いっそ class で指定しちゃうのもアリ</li>
</ul>
<h2>良さそうな手法</h2>
<p>問題点、注意点を考慮して考えてみると、理想はこんな感じでしょうか。</p>
<ul>
<li>
元のリンクはそのウィンドウに開く形態にしておきつつ新規ウィンドウを開きたい人のためになんらかのアイコンなどで新規ウィンドウを開く方法も同時に作っておく。<br />
その際 _blank を付け足すのではなく、 window.open を使用する形で。<br />
※これの欠点は、同じリンクを 2 回記述することになるのでソースが伸びてしまうこと。
</li>
<li>
ユーザーが新規ウィンドウで開くかどうか決められるように javascript で細工をつくり、チェックボックスにチェックをつけた場合には新規ウィンドウを開かない、なんてのも良いかも。
</li>
<li>
javascript で開くようにする場合にも、href に URL を指定する。<br />
( この場合、元のウィンドウが一緒にページが変わってしまわないよう、ちょっとしたポイントがある。)<br />
これによって javascript がオフの環境でリンク先に行けないなどということが起きなくなる。
</li>
</ul>
<p>理想にちょっとでも近づくべく、<a href="http://hori-uchi.com/archives/000424.html">[hori-uchi.com: _blankを使わないで別ウィンドウを開くにはrel="external"を使うのが美しいと思う。</a> の hori-uchi さんのコードを少し改造させていだいて使うことにしました。元のソースの詳細は、上記サイトで確認していただくとして改造したところを書いておきます。</p>
<p>元のコード▼</p>
<pre class="brush: js; auto-links: false;">
function externalLinks() {
if (! document.getElementsByTagName ) return;
var anchors = document.getElementsByTagName(&quot;a&quot;);
for (var i=0; i&lt;anchors.length; i++) {
var anchor = anchors[i];
if (anchor.getAttribute(&quot;href&quot;) &amp;&amp; anchor.getAttribute(&quot;rel&quot;) == &quot;external&quot;) {
anchor.onclick = function(event){return popupWindow(this, event);}
anchor.onkeypress = function(event){return popupWindow(this, event);}
}
}
}

function popupWindow(anchor, event){
var keyCode;
if (event &amp;&amp; event.type == &#8216;keypress&#8217;) {
if (event.keyCode)
keyCode = event.keyCode;
else if (event.which)
keyCode = event.which;
// 13 == Return key. 32 == space key
if (keyCode != 13 &amp;&amp; keyCode != 32)
return true;
}
return !window.open(anchor);
}
Event.observe(window,&#8217;load&#8217;, externalLinks, false);
</pre>
<p>もし <code>class="externalLink"</code> と class に指定するならば、<br />
6 行目の rel を class に変更します。<br />
 rel 属性を使って指定するのであれば、そのままで OK です。</p>
<p>26 行目の<br />
<code>Event.observe(window,'load', externalLinks, false);</code> を、<br />
<code>window.onload = external;</code> に変更。</p>
<p>変更したものが、こちら。▼</p>
<pre class="brush: js; auto-links: false;">
function externalLinks() {
if (! document.getElementsByTagName ) return;
var anchors = document.getElementsByTagName(&quot;a&quot;);
for (var i=0; i&lt;anchors.length; i++) {
var anchor = anchors[i];
if (anchor.getAttribute(&quot;href&quot;) &amp;&amp; anchor.getAttribute(&quot;class&quot;) == &quot;external&quot;) {
anchor.onclick = function(event){return popupWindow(this, event);}
anchor.onkeypress = function(event){return popupWindow(this, event);}
}
}
}

function popupWindow(anchor, event){
var keyCode;
if (event &amp;&amp; event.type == 'keypress') {
if (event.keyCode)
keyCode = event.keyCode;
else if (event.which)
keyCode = event.which;
// 13 == Return key. 32 == space key
if (keyCode != 13 &amp;&amp; keyCode != 32)
return true;
}
return !window.open(anchor);
}
window.onload = externalLinks;
</pre>
<h2>こういうのが理想かな？</h2>
<p><a href="http://wp.graphact.com/">Numb.<img src="http://wp.graphact.com/wp-content/uploads/img/open.gif" alt="新しいウィンドウに開く" title="新しいウィンドウに開く" class="externalLink" /></a></p>
<p>こんな感じに、「このウィンドウに開く」、「新しいウィンドウに開く」でリンクを 2 つ書くのが本当はいいんじゃないかな～。でも、ちょっと骨が折れますね :roll:<br />
<a href="http://roel.meurders.nl/wordpress-plugins/wp-addquicktag-plugin-for-adding-quicktags/">WP-AddQuicktag</a><br />
 で登録しちゃえば、多少が作業量が軽減される、かも？</p>
<p>私は当面は、XHTML1.0 Transitional を使いながら rel 属性を使って、 javascript でwindow.open を使うようにしてみようかな～と思います。<br />
両方書くのは、続けられる自信が…</p>
<p>もし 2 つリンクを書くようにするならば、こんな感じのものをボタンに登録するつもりです。<br />
<code>&lt;a href="" class="externalLink"&gt;&lt;img src="open.gif" alt="新しいウィンドウを開きます" title="新しいウィンドウを開きます" /&gt;&lt;/a&gt;</code></p>
<p>2 つ書く場合 Markdown を使うと、下記のように書くことになりそうです。ううーむ。<br />
やっぱりちょっと、お手軽さが減っちゃいますね～。</p>
<pre class="brush: plain; auto-links: false;">
[Link](http://xxx.com/)
[<img src="open.gif" alt="新しいウィンドウを開きます" title="新しいウィンドウを開きます" class="externalLink" />](http://xxx.com/" rel="external)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://wp.graphact.com/2006/03/22/29/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

