<?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>しゃおの雑記帳 &#187; JavaScript</title>
	<atom:link href="http://d.1555.info/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://d.1555.info</link>
	<description>ごったまぜ日々の雑記とか。</description>
	<lastBuildDate>Mon, 23 Jan 2012 00:00:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Amazonアソシエイト一発ブックマークレット</title>
		<link>http://d.1555.info/2010/02/28/amazon-associate-quickbookmarklet/</link>
		<comments>http://d.1555.info/2010/02/28/amazon-associate-quickbookmarklet/#comments</comments>
		<pubDate>Sat, 27 Feb 2010 17:07:44 +0000</pubDate>
		<dc:creator>shao</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://d.1555.info/?p=86</guid>
		<description><![CDATA[				まぁ誰かやってそうですが、いちおうつくっておきます。大して検証していません。
				ポイント
				
				ソースの yourAfIDの部分を置き換えたいアソシエイトIDに変えてください。そのままで使うと、ぼく]]></description>
			<content:encoded><![CDATA[				<p>まぁ誰かやってそうですが、いちおうつくっておきます。大して検証していません。</p>
				<h3>ポイント</h3>
				<ul>
				<li>ソースの yourAfIDの部分を置き換えたいアソシエイトIDに変えてください。そのままで使うと、ぼくが<a href="http://twitterircgateway.g.hatena.ne.jp/y_mashiro/">DBLoggerでお世話になっているお友達</a>に結びつきます</li>
				<li>amazonで商品ページを出しているときに当該ブックマークレットを使ってみてください</li>
				<li>あまりに突貫工事なのでSafari 4以外では動作を確認していません。</li>
				<li>link rel=canonicalによるURL正規化って便利だよね、っていう話でもあります。</li>
				</ul>
				<h3>ブックマークレット</h3>
				<p><a href="javascript:var yourAfID=&quot;mashiro00-22&quot;,links=document.getElementsByTagName(&quot;link&quot;), z;for (var i=0; i&lt;links.length; i++) {; if (links[i].getAttribute(&quot;rel&quot;)==&quot;canonical&quot;) {z=links[i];break}}; var asin= /dp\/([0-9A-Z]+)$/.exec(z.getAttribute(&quot;href&quot;))[1];if (asin) {window.location=[&quot;http://www.amazon.co.jp/exec/obidos/ASIN/&quot;,asin,&quot;/&quot;,yourAfID,&quot;/&quot;].join(&quot;&quot;)}">Amazon Associate</a></p>
				<h3>ソース</h3>
				<p><code> </code></p>
				<pre><code>var yourAfID="mashiro00-22", links = document.getElementsByTagName('link'), z;
for (var i=0;i&lt;links.length;i++) {
  if (links[i].getAttribute('rel')=="canonical") {
    z=links[i];
    break;
  }
}
var asin= /dp\/([0-9A-Z]+)$/.exec(z.getAttribute("href"))[1];
if (asin) {
  window.location=[
    "http://www.amazon.co.jp/exec/obidos/ASIN/",
    asin,
    "/",yourAfID,"/"
  ].join("")
}</code></pre>
				<p><code> </code></p>
]]></content:encoded>
			<wfw:commentRss>http://d.1555.info/2010/02/28/amazon-associate-quickbookmarklet/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>超実験中: ニコニコ別窓ミニプレーヤ</title>
		<link>http://d.1555.info/2008/05/05/nicovideo-miniplayer-bookmarklet/</link>
		<comments>http://d.1555.info/2008/05/05/nicovideo-miniplayer-bookmarklet/#comments</comments>
		<pubDate>Sun, 04 May 2008 23:03:31 +0000</pubDate>
		<dc:creator>shao</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ニコニコポン]]></category>

		<guid isPermaLink="false">http://d.1555.info/2008/05/05/nicovideo-miniplayer-bookmarklet/</guid>
		<description><![CDATA[				ここ最近、毎日のようにBookmarkletを作っている気がします。さて今日はニコニコ動画を作業用に見たいと思ってもどうにも場所をとってしまう、というわけで再生部分を別窓に追い出せるプレーヤーをつくってみました。とは]]></description>
			<content:encoded><![CDATA[				<p>ここ最近、毎日のようにBookmarkletを作っている気がします。さて今日は<a href="http://www.nicovideo.jp/">ニコニコ動画</a>を作業用に見たいと思ってもどうにも場所をとってしまう、というわけで再生部分を別窓に追い出せるプレーヤーをつくってみました。とはいえ超α版。まだいろいろ調整中です。<a href="http://d.1555.info/wp-content/uploads/2008/05/02c5f41381365dce374160bf66dbe924.png" rel="lightbox" title="NicoNico MiniPlayer Bookmarklet"><img src="http://d.1555.info/wp-content/uploads/2008/05/02c5f41381365dce374160bf66dbe924.png" style="width: 299px; height: 288px" alt="Hatena Bookmark Bookmarklet" /></a><br />
				<h3>使い方</h3>
				<p><a href="javascript:var%20b=document.body;if(b){void(z=document.createElement('script'));void(z.src='http://nicopon.jp/js/miniplayer.js');void(b.appendChild(z));}">NicoVideo_MiniPlayer</a> ←このリンクをブックマークツールバーにドラッグ、または右クリックなどでブックマークに登録。下記のソースをコピーしてブックマークに登録してもOKです
				<pre name="code" class="js">javascript:var%20b=document.body;if(b){void(z=document.createElement('script'));void(z.src='http://nicopon.jp/js/miniplayer.js');void(b.appendChild(z));}</pre>
<p>ニコニコ動画の再生ページでブックマークレットを呼び出すことで、別ウインドウにプレーヤが開きます。再生は自動的にはじまりませんので(JavaScript経由のインタフェースが見当たらない)、自分で再生ボタンをクリックしてください。また、リサイズすると再生が一旦中断されますので手動で再開して早送りするなどしてください。<br />
<h3>メモ</h3>
<ul>
<li> Firefox 2 / 3beta, Opera 9.50 beta 2, IE 6, Safari 3.1 にて動作確認しました。</li>
<li> 特にIEが挙動不審。window.openした先にDOMで&lt;script&gt;タグを挿入しようとするとスクリプトエラーになるのはなんでかな。あと動画のサイズをうまく取得できない。</li>
<li>IEはwindow.opener関数を使っているため、呼び出し元のウインドウを閉じてしまうとサイズ変更ができなくなる不都合あり。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://d.1555.info/2008/05/05/nicovideo-miniplayer-bookmarklet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefoxでも前面にちゃんとポップアップする はてブ追加Bookmarklet (5/18更新)</title>
		<link>http://d.1555.info/2008/05/04/hatebu-bookmarklet-firefox-fix/</link>
		<comments>http://d.1555.info/2008/05/04/hatebu-bookmarklet-firefox-fix/#comments</comments>
		<pubDate>Sat, 03 May 2008 17:29:01 +0000</pubDate>
		<dc:creator>shao</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://d.1555.info/2008/05/04/hatebu-bookmarklet-firefox-fix/</guid>
		<description><![CDATA[				はてなブックマークでは公式のブックマークレットが配布されているのですが、うちの手元のFirefoxだと画面の背面にポップアップが出現してしまうために非常に使いにくく感じたので作り直してみました。
				
	]]></description>
			<content:encoded><![CDATA[				<p><a href="http://b.hatena.ne.jp/">はてなブックマーク</a>では公式の<a href="http://b.hatena.ne.jp/register?registered=1">ブックマークレットが配布されている</a>のですが、うちの手元のFirefoxだと画面の背面にポップアップが出現してしまうために非常に使いにくく感じたので作り直してみました。</p>
				<p><a href="http://d.1555.info/wp-content/uploads/2008/05/64e21b88a34bd2a53c7f192eddd8b646.png" title="Hatena Bookmark Bookmarklet" rel="lightbox"><img src="http://d.1555.info/wp-content/uploads/2008/05/64e21b88a34bd2a53c7f192eddd8b646.png" alt="Hatena Bookmark Bookmarklet" style="width: 365px; height: 284px" /></a></p>
				<p>どうやら入れている拡張やバージョンの差違によって問題がなくなったりするみたいなのですが、とりあえず解決法はsetTimeout で非同期呼び出しを行うことのようでした。UAを判別してGeckoっぽかったらsetTimeoutで呼び出し、そうでなければふつうに呼び出してみます。</p>
				<h3>使い方</h3>
				<p><a href="javascript:(function(){var d=document,l=d.location,f='http://b.hatena.ne.jp/add?mode=confirm&#038;is_bm=1&#038;title=',w=window,u=f+escape(d.title)+'&#038;url='+escape(l),r=w.SymRealWinOpen;o=r?r:w.open ;a=function(){o(u,'b', 'width=550,height=600,resizable=1,scrollbars=1')};if(/Gecko\//.test(navigator.userAgent))setTimeout(a,0);else a();void(0);})();">はてブに追加</a> ←このリンクをブックマークツールバーにドラッグ、または右クリックなどでブックマークに登録。</p>
				<p>下記のソースをコピーしてブックマークに登録してもOKです</p>
				<pre>javascript:(function(){var d=document,l=d.location,f='http://b.hatena.ne.jp/add?mode=confirm&#038;is_bm=1&#038;title=',w=window,u=f+escape(d.title)+'&#038;url='+escape(l),r=w.SymRealWinOpen;o=r?r:w.open ;a=function(){o(u,'b', 'width=550,height=600,resizable=1,scrollbars=1')};if(/Gecko\//.test(navigator.userAgent))setTimeout(a,0);else a();void(0);})();</pre>
<h3>メモ</h3>
<ul>
<li> Firefox 2 / 3beta, Opera 9.50 beta 2, IE 6 / 7(Thx: <a href="http://twitter.com/nkoz">@nkoz</a>), Safari にて動作確認しました。</li>
<li> 遅延呼び出しは<a href="http://www.tumblr.com/goodies">TumblrのBookmarklet</a>からヒントを得ました。ありがとうございます。</li>
<li>2008/05/18追記: <a href="http://imihu.blog30.fc2.com/">イミフ</a>でブックマークレットが動作しなかった問題に対処。Symなんちゃらっていう関数はいりませんよ＞イミフの中の人</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://d.1555.info/2008/05/04/hatebu-bookmarklet-firefox-fix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>その場で生成された短縮URLがわかるTinyURLブックマークレットを作ったよ</title>
		<link>http://d.1555.info/2008/04/28/make-tinyurl-with-json/</link>
		<comments>http://d.1555.info/2008/04/28/make-tinyurl-with-json/#comments</comments>
		<pubDate>Sun, 27 Apr 2008 18:54:15 +0000</pubDate>
		<dc:creator>shao</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://d.1555.info/2008/04/28/make-tinyurl-with-json/</guid>
		<description><![CDATA[				TinyURLは長いURLをTwitterやメール、メッセンジャーなどに書き込むときに便利なんだけど、いちいちTinyURL.comのサイトからURLをコピペするのが面倒だな、と思ったので作成。TinyURLによって生成された URI がプロンプトとして即時に返ってきますのでコピ]]></description>
			<content:encoded><![CDATA[				<p>TinyURLは長いURLをTwitterやメール、メッセンジャーなどに書き込むときに便利なんだけど、いちいちTinyURL.comのサイトからURLをコピペするのが面倒だな、と思ったので作成。<a href="http://d.1555.info/wp-content/uploads/2008/04/f08c20a3436157f6619e94ef066ba62c.png" title="TinyURL Bookmarklet" rel="lightbox"><img src="http://d.1555.info/wp-content/uploads/2008/04/f08c20a3436157f6619e94ef066ba62c.png" alt="TinyURL Bookmarklet" style="width: 328px; height: 217px" /></a>TinyURLによって生成された URI がプロンプトとして即時に返ってきますのでコピペとかしやすいかと。<br />
				<h3>使い方</h3>
				<p><a href="javascript:var%20b=document.body;if(b){_cb=function(s){void(window.prompt('Converted%20URI',s))};void(z=document.createElement('script'));void(z.src='http://remysharp.com/tinyurlapi?callback=_cb&amp;url='+encodeURI(decodeURIComponent(location.href)));void(b.appendChild(z));}" title="TinyURL Bookmarklet">TinyURL!</a> ←このリンクをブックマークツールバーにドラッグ、または右クリックなどでブックマークに登録。下記のソースをコピーしてブックマークに登録してもOKです
				<pre>javascript:var%20b=document.body;if(b){_cb=function(s){void(window.prompt('Converted URI',s))};void(z=document.createElement('script'));void(z.src='http://remysharp.com/tinyurlapi?callback=_cb&amp;url='+encodeURI(decodeURIComponent(location.href)));void(b.appendChild(z));}</pre>
<h3>メモ</h3>
<ul>
<li>JSONを使っています。ソースはこんな感じ。
<pre class="javascript" name="code">var b=document.body;</pre>
				<pre class="javascript" name="code">if(b){
 _cb=function(s);
 void(window.prompt('Converted URI',s));
 void(z=document.createElement('script'));
 void(z.src='http://remysharp.com/tinyurlapi? callback=_cb&amp;url='+encodeURI(decodeURIComponent(location.href)));
 void(b.appendChild(z));
}</pre>
				</li>
				<li>Safariなどで2バイト文字がデコードされずにアドレスバーに表示されているときでも正常にTinyURLで生成できるようにしています。</li>
				<li>しかしながら # を含む URL はうまくTinyURLできません。デコードしてAPIに渡しても #より先は切り捨てられてしまう。。</li>
				</ul>
				<h3>謝辞</h3>
				<p>remy sharp氏の <a href="http://remysharp.com/tinyurlapi">TinyURL Callback API </a>を利用させていただきました。 Thanks a lot!</p>
]]></content:encoded>
			<wfw:commentRss>http://d.1555.info/2008/04/28/make-tinyurl-with-json/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>User JavaScriptのロードタイミング</title>
		<link>http://d.1555.info/2007/03/19/user-js_load-timing/</link>
		<comments>http://d.1555.info/2007/03/19/user-js_load-timing/#comments</comments>
		<pubDate>Sun, 18 Mar 2007 18:50:49 +0000</pubDate>
		<dc:creator>shao</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://d.1555.info/2007/03/19/user-js_load-timing/</guid>
		<description><![CDATA[				ニコニコポンのGreasemonkeyスクリプトを書いてて気づいたのだが、ブラウザごとにJavaScriptの実行タイミングが異なるようなので、それの対処に苦慮した。
				
				Firefox + Greasemonkey: onloadイベントの直前
				Safari + Creammonkey: onloadイベントの直前
				Opera: onloadイベ]]></description>
			<content:encoded><![CDATA[				<p><a href="http://home.1555.info/nicopon/" title="ニコニコポン">ニコニコポン</a>のGreasemonkeyスクリプトを書いてて気づいたのだが、ブラウザごとにJavaScriptの実行タイミングが異なるようなので、それの対処に苦慮した。</p>
				<ul>
				<li>Firefox + Greasemonkey: onloadイベントの直前</li>
				<li>Safari + Creammonkey: onloadイベントの直前</li>
				<li>Opera: onloadイベントの直後</li>
				<li>IE + Trixie, Sleipnir + SeaHorse: onloadイベントの直後</li>
				</ul>
				<p>読み込まれたHTMLのDOMツリーにアクセスして内容を書き換える処理を行うUser JavaScriptを書くとして、FirefoxとSafariではaddEventListenerでloadイベントに関連づければよく、OperaとIE系では(loadが終わってからスクリプトが実行されるため)そのまま関数を実行すればよいということになる。</p>
				<p><span id="more-4"></span></p>
				<p>これをふまえて、DOMツリーを操作する関数fnTouchDOMをクロスブラウザで適切なタイミングに実行させるスクリプトは下記のようになる。</p>
				<pre>
var fnTouchDOM = function(){
	....
};

// ---
// [Util] UserAgent Matches
// ---
function inUA(_kw){
	return navigator.userAgent.indexOf(_kw);
}

// ---
// (Global) Event Regist/caller
// ---
if(inUA('Opera')!=-1 || inUA('MSIE')!=-1){
	fnTouchDOM.apply();
} else if(inUA('Gecko')!=1 || inUA('AppleWebKit')!=-1){
	window.addEventListener('load',fnTouchDOM, true);
}</pre>
				<p>ただ、引数なしのapply()をしていいのか怪しいのと、userAgentを明示した分岐があまりスマートでなかったりするのが課題。</p>
]]></content:encoded>
			<wfw:commentRss>http://d.1555.info/2007/03/19/user-js_load-timing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

