<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>ページの移動にショートカットキーを追加 へのコメント</title>
	<atom:link href="http://www.naotaka.com/blog/2008/07/13/shortcut/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.naotaka.com/blog/2008/07/13/shortcut/</link>
	<description>ちょっと便利なソフトを創りたい、iMac (Early 2008) ユーザーのブログ</description>
	<lastBuildDate>Wed, 09 Jun 2010 15:23:47 +0900</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>RUF より</title>
		<link>http://www.naotaka.com/blog/2008/07/13/shortcut/comment-page-1/#comment-310</link>
		<dc:creator>RUF</dc:creator>
		<pubDate>Thu, 26 Mar 2009 06:19:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.naotaka.com/blog/?p=259#comment-310</guid>
		<description>&lt;p&gt;ありがとうございます。長文のスクリプトの記載、感謝です！&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>ありがとうございます。長文のスクリプトの記載、感謝です！</p>]]></content:encoded>
	</item>
	<item>
		<title>naotaka より</title>
		<link>http://www.naotaka.com/blog/2008/07/13/shortcut/comment-page-1/#comment-309</link>
		<dc:creator>naotaka</dc:creator>
		<pubDate>Tue, 24 Mar 2009 11:39:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.naotaka.com/blog/?p=259#comment-309</guid>
		<description>&lt;p&gt;こんな感じでdocumentにショートカットキーをbindしています。&lt;/p&gt;

&lt;p&gt;Amazon.comで使われている方法をjQueryに書き直した感じです。jQueryの使い方は、『jQuery in Action』で覚えました。&lt;/p&gt;

&lt;p&gt;ご参考になれば幸いです。&lt;/p&gt;

&lt;h2&gt;[HTML]&lt;/h2&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;&gt;div class=&quot;pager&quot;&lt;
&lt;div class=&quot;pager&quot;&gt;
    &lt;div class=&quot;pagination&quot;&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;/browse/jp/87444011/1&quot;&gt;&#171; 前のページ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;/browse/jp/87444011/1&quot;&gt;1&lt;/a&gt;&lt;/li&gt;&lt;li class=&quot;current&quot;&gt;2&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;/browse/jp/87444011/3&quot;&gt;3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;/browse/jp/87444011/4&quot;&gt;4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;/browse/jp/87444011/5&quot;&gt;5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;/browse/jp/87444011/6&quot;&gt;6&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;/browse/jp/87444011/7&quot;&gt;7&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;/browse/jp/87444011/8&quot;&gt;8&lt;/a&gt;&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;/browse/jp/87444011/400&quot;&gt;400&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;/browse/jp/87444011/3&quot;&gt;次のページ &#187;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;script type=&quot;text/javascript&quot;&gt;
    registerDoubleKeyHandler(&#039;80&#039;, &#039;keyup&#039;, &#039;prevPage&#039;);
    registerDoubleKeyHandler(&#039;78&#039;, &#039;keyup&#039;, &#039;nextPage&#039;);
&lt;/script&gt;
&lt;/pre&gt;

&lt;h2&gt;[JavaScript]&lt;/h2&gt;

&lt;pre class=&quot;prettyprint&quot;&gt;function registerDoubleKeyHandler(registerKeyCode, eventName, direction) {
    _appendTitleAttributes();

    $(document).bind(eventName, function(event) {
        if (event.keyCode == registerKeyCode) {
            var nodeName = event.target.nodeName.toUpperCase();
            if (nodeName == &#039;INPUT&#039; &#124;&#124; nodeName == &#039;TEXTAREA&#039;) {
                return;
            }

            if (this.shortcutTimeout &amp;&amp; this.prevKey == registerKeyCode) {
                clearTimeout(this.shortcutTimeout);
                this.shortcutTimeout = null;

                return _followLink(direction);
            }
            else {
                this.prevKey = registerKeyCode;
                var thisObj = this;
                this.shortcutTimeout = setTimeout(function() {
                    thisObj.shortcutTimeout = null;
                    thisObj.prevKey = null;
                }, 300);
            }
        }
    });
}

function _appendTitleAttributes() {
    var positions = [&#039;first&#039;, &#039;last&#039;];
    for (var i = 0; i &lt; positions.length; i++) {
        var position = positions[i];
        $(&#039;div.pagination&#039;).each(function() {
            $(this).find(&#039;ul &gt; li:&#039;+position+&#039; &gt; a[href]&#039;).each(function() {
                var title = (position == &#039;first&#039;)
                ? &#039;前のページ (ショートカット: Pキーを2回押します)&#039;
                : &#039;次のページ (ショートカット: Nキーを2回押します)&#039;;
            $(this).attr(&#039;title&#039;, title);
            });
        });
    }
}

function _followLink(direction) {
    var position = (direction == &#039;prevPage&#039;) ? &#039;first&#039; : &#039;last&#039;;

    $(&#039;div.pagination&#039;).each(function() {
        $(this).find(&#039;ul &gt; li:&#039;+position+&#039; &gt; a[href]&#039;).each(function() {
            var color = &#039;#000099&#039;;
            $(this).css(&#039;color&#039;, color).css(&#039;border-color&#039;, color).effect(&#039;pulsate&#039;, { times: 1 }, 300);

            document.location = this;
        });
    });
}
&lt;/pre&gt;
</description>
		<content:encoded><![CDATA[<p>こんな感じでdocumentにショートカットキーをbindしています。</p>

<p>Amazon.comで使われている方法をjQueryに書き直した感じです。jQueryの使い方は、『jQuery in Action』で覚えました。</p>

<p>ご参考になれば幸いです。</p>

<h2>[HTML]</h2>

<pre class="prettyprint">&gt;div class="pager"&lt;
&lt;div class="pager"&gt;
    &lt;div class="pagination"&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="/browse/jp/87444011/1"&gt;&laquo; 前のページ&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="/browse/jp/87444011/1"&gt;1&lt;/a&gt;&lt;/li&gt;&lt;li class="current"&gt;2&lt;/li&gt;&lt;li&gt;&lt;a href="/browse/jp/87444011/3"&gt;3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="/browse/jp/87444011/4"&gt;4&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="/browse/jp/87444011/5"&gt;5&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="/browse/jp/87444011/6"&gt;6&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="/browse/jp/87444011/7"&gt;7&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="/browse/jp/87444011/8"&gt;8&lt;/a&gt;&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;li&gt;&lt;a href="/browse/jp/87444011/400"&gt;400&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="/browse/jp/87444011/3"&gt;次のページ &raquo;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;script type="text/javascript"&gt;
    registerDoubleKeyHandler('80', 'keyup', 'prevPage');
    registerDoubleKeyHandler('78', 'keyup', 'nextPage');
&lt;/script&gt;
</pre>

<h2>[JavaScript]</h2>

<pre class="prettyprint">function registerDoubleKeyHandler(registerKeyCode, eventName, direction) {
    _appendTitleAttributes();

    $(document).bind(eventName, function(event) {
        if (event.keyCode == registerKeyCode) {
            var nodeName = event.target.nodeName.toUpperCase();
            if (nodeName == 'INPUT' || nodeName == 'TEXTAREA') {
                return;
            }

            if (this.shortcutTimeout &#038;&#038; this.prevKey == registerKeyCode) {
                clearTimeout(this.shortcutTimeout);
                this.shortcutTimeout = null;

                return _followLink(direction);
            }
            else {
                this.prevKey = registerKeyCode;
                var thisObj = this;
                this.shortcutTimeout = setTimeout(function() {
                    thisObj.shortcutTimeout = null;
                    thisObj.prevKey = null;
                }, 300);
            }
        }
    });
}

function _appendTitleAttributes() {
    var positions = ['first', 'last'];
    for (var i = 0; i < positions.length; i++) {
        var position = positions[i];
        $('div.pagination').each(function() {
            $(this).find('ul > li:'+position+' > a[href]').each(function() {
                var title = (position == 'first')
                ? '前のページ (ショートカット: Pキーを2回押します)'
                : '次のページ (ショートカット: Nキーを2回押します)';
            $(this).attr('title', title);
            });
        });
    }
}

function _followLink(direction) {
    var position = (direction == 'prevPage') ? 'first' : 'last';

    $('div.pagination').each(function() {
        $(this).find('ul > li:'+position+' > a[href]').each(function() {
            var color = '#000099';
            $(this).css('color', color).css('border-color', color).effect('pulsate', { times: 1 }, 300);

            document.location = this;
        });
    });
}
</pre>]]></content:encoded>
	</item>
	<item>
		<title>RUF より</title>
		<link>http://www.naotaka.com/blog/2008/07/13/shortcut/comment-page-1/#comment-307</link>
		<dc:creator>RUF</dc:creator>
		<pubDate>Mon, 23 Mar 2009 09:05:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.naotaka.com/blog/?p=259#comment-307</guid>
		<description>&lt;p&gt;Jqueryベースで、ショートカットキーの実装方法を調べているうちに、ここにたどり着きました。BookFind.jpのサイトにてソースを拝見させていただいたのですが、私の技量ではどのように「前のページ」、「次のページ」のリンクにキーバインドを設定しているのか分かりませんでした。&lt;/p&gt;

&lt;p&gt;※aタグにidを付与しているようではないような…。分かりませんでした。&lt;/p&gt;

&lt;p&gt;よろしければ手法をご教示いただければと思います。また実装方法を説明しているサイトなどありましたら、ご紹介いただければと思います。&lt;/p&gt;

&lt;p&gt;どうぞよろしくお願い致します。&lt;/p&gt;
</description>
		<content:encoded><![CDATA[<p>Jqueryベースで、ショートカットキーの実装方法を調べているうちに、ここにたどり着きました。BookFind.jpのサイトにてソースを拝見させていただいたのですが、私の技量ではどのように「前のページ」、「次のページ」のリンクにキーバインドを設定しているのか分かりませんでした。</p>

<p>※aタグにidを付与しているようではないような…。分かりませんでした。</p>

<p>よろしければ手法をご教示いただければと思います。また実装方法を説明しているサイトなどありましたら、ご紹介いただければと思います。</p>

<p>どうぞよろしくお願い致します。</p>]]></content:encoded>
	</item>
</channel>
</rss>
