<?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/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>ディスコ探偵冬景色 &#187; JavaScript</title>
	<atom:link href="http://blog.udzura.jp/categories/tech/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.udzura.jp</link>
	<description>a coding class hero is something to be...</description>
	<lastBuildDate>Thu, 29 Jul 2010 05:48:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/categories/tech/javascript/feed/" />
		<item>
		<title>開いたWindowの存在を検出</title>
		<link>http://blog.udzura.jp/2010/01/19/detect-if-the-window-exists/</link>
		<comments>http://blog.udzura.jp/2010/01/19/detect-if-the-window-exists/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 11:20:04 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=252</guid>
		<description><![CDATA[友達が困ってるので書いた。
ポップアップでウィンドウを開く時、二重でオープンしたり、開いてるウィンドウを間違えてリフレッシュしたりしないためにはどうするかということだと思う。
要するに普通にwindow.openで開けばいいのだが、このメソッドの返り値は開いた先のwindowなので、変数に閉じ込めればよい。そうすれば「closed」というプロパティで開いてるか閉じてるかが検出可能。

1
2
3
4
5
6
var myWin = window.open&#40;'http://blog.udzura.jp', 'mywindow1'&#41;;
alert&#40;myWin.closed&#41;;
//=&#62; false
//開いたウィンドウを閉じれば
alert&#40;myWin.closed&#41;;
//=&#62; true

実際はグローバル変数とか微妙なので、せめてクロージャを使うとスマートだと思う。
やっつけなりに実装してみたソースは以下の如し。サンプルサイトもあるよ。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function setOpener&#40;&#41;&#123;
  var myWin = null;
  var openOneAndOnlyWindow = function&#40;e&#41;&#123;
    if&#40;e&#41; e.preventDefault&#40;&#41;;
    if&#40;!myWin &#124;&#124; myWin.closed&#41;&#123;
      alert&#40;&#34;window does not exist!&#34;&#41;;
      myWin = window.open&#40;'http://blog.udzura.jp', 'mywindow1'&#41;;
    &#125; else &#123;
   [...]]]></description>
			<content:encoded><![CDATA[<p>友達が困ってるので書いた。</p>
<p>ポップアップでウィンドウを開く時、二重でオープンしたり、開いてるウィンドウを間違えてリフレッシュしたりしないためにはどうするかということだと思う。</p>
<p>要するに普通にwindow.openで開けばいいのだが、このメソッドの返り値は開いた先のwindowなので、変数に閉じ込めればよい。そうすれば「closed」というプロパティで開いてるか閉じてるかが検出可能。</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">var</span> myWin <span style="color: #339933;">=</span> window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://blog.udzura.jp'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'mywindow1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>myWin.<span style="color: #660066;">closed</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//=&gt; false</span>
<span style="color: #006600; font-style: italic;">//開いたウィンドウを閉じれば</span>
<span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span>myWin.<span style="color: #660066;">closed</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #006600; font-style: italic;">//=&gt; true</span></pre></td></tr></table></div>

<p>実際はグローバル変数とか微妙なので、せめてクロージャを使うとスマートだと思う。</p>
<p>やっつけなりに実装してみたソースは以下の如し。<a href="http://udzura.jp/test_site/test.html">サンプルサイト</a>もあるよ。</p>
<p><span id="more-252"></span></p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> setOpener<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #003366; font-weight: bold;">var</span> myWin <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #339933;">;</span>
  <span style="color: #003366; font-weight: bold;">var</span> openOneAndOnlyWindow <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span> e.<span style="color: #660066;">preventDefault</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>myWin <span style="color: #339933;">||</span> myWin.<span style="color: #660066;">closed</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;window does not exist!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      myWin <span style="color: #339933;">=</span> window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'http://blog.udzura.jp'</span><span style="color: #339933;">,</span> <span style="color: #3366CC;">'mywindow1'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #000066; font-weight: bold;">else</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #000066;">alert</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;window exists...&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">return</span> openOneAndOnlyWindow<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
window.<span style="color: #000066;">onload</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;opener_link&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">onclick</span> <span style="color: #339933;">=</span> setOpener<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;html<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;script</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;text/javascript&quot;</span> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">&quot;detect_window.js&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span><span style="color: #000000; font-weight: bold;">&lt;/script<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;h1<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;a</span> <span style="color: #000066;">href</span>=<span style="color: #ff0000;">&quot;#&quot;</span> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">&quot;opener_link&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>Open Just One Window<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/a<span style="color: #000000; font-weight: bold;">&gt;</span></span><span style="color: #000000; font-weight: bold;">&lt;/h1<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/body<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/html<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>

<p>ポップアップウィンドウが開いてる/閉じてる状態でリンクをクリックしたりして遊んでください。なお、ファイヤーフォックス（>=3.5.7）とインタネットエクスプローラ（>=7）でしか確認してません。</p>
<p>さらに言うと、僕は普段ろくにJavaScript書いてなかったりする（<a href="http://jp.rubyist.net/magazine/?0014-RubyOnRails">RJS便利だよRJS</a>派）。。</p>
<h3>参考サイト</h3>
<ul>
<li><a href="http://www.tohoho-web.com/js/window.htm#open">http://www.tohoho-web.com/js/window.htm#open</a></li>
<li><a href="http://f32.aaa.livedoor.jp/~azusa/?t=js&#038;p=window_openclose#a_closed">http://f32.aaa.livedoor.jp/~azusa/?t=js&#038;p=window_openclose#a_closed</a></li>
<li><a href="http://0xcc.net/blog/archives/000040.html">http://0xcc.net/blog/archives/000040.html （クロージャのソース参考にした）</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2010/01/19/detect-if-the-window-exists/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2010/01/19/detect-if-the-window-exists/" />
	</item>
		<item>
		<title>やっぱりはてな離れが出来ない</title>
		<link>http://blog.udzura.jp/2009/11/10/activation-of-hatena-star/</link>
		<comments>http://blog.udzura.jp/2009/11/10/activation-of-hatena-star/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 11:28:38 +0000</pubDate>
		<dc:creator>udzura</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[＜雑＞]]></category>

		<guid isPermaLink="false">http://blog.udzura.jp/?p=55</guid>
		<description><![CDATA[なかば業務連絡なんですけど、「はてなスター」をこのブログでもアクティベートしました。積極的に付けてくださいネ☆（どこかの狐みたいなアイコンの人に向かって
設定なんだけれど、僕は「Arclite」と言うテーマを使っていて、ほとんどいじっていないので他の方も同様の設定が出来ると思う。
 
設定スクリプトはこんな感じで、これをheader.phpにねじこむ。あと、少しだけDOMもいじる必要があり、single.phpの「class=&#8221;post-title&#8221;」の箇所の行を以下のように変更する。
 
これではてなスターがアクティベートされる。
他のテーマの方も、ページのエイチティーエムエルをガン見すれば何とかなると思う。
その他の手順、事前準備については、はてな公式を見ましょう。

はてなスターをブログに設置するには

]]></description>
			<content:encoded><![CDATA[<p>なかば業務連絡なんですけど、「はてなスター」をこのブログでもアクティベートしました。積極的に付けてくださいネ☆（どこかの狐みたいなアイコンの人に向かって</p>
<p>設定なんだけれど、僕は<a href="http://wordpress.org/extend/themes/arclite">「Arclite」</a>と言うテーマを使っていて、ほとんどいじっていないので他の方も同様の設定が出来ると思う。</p>
<p><script src="http://gist.github.com/230802.js"></script> </p>
<p>設定スクリプトはこんな感じで、これをheader.phpにねじこむ。あと、少しだけDOMもいじる必要があり、single.phpの「class=&#8221;post-title&#8221;」の箇所の行を以下のように変更する。</p>
<p> <script src="http://gist.github.com/230809.js"></script></p>
<p>これではてなスターがアクティベートされる。</p>
<p>他のテーマの方も、ページのエイチティーエムエルをガン見すれば何とかなると思う。</p>
<p>その他の手順、事前準備については、はてな公式を見ましょう。</p>
<ul>
<li><a href="http://d.hatena.ne.jp/hatenastar/20070707">はてなスターをブログに設置するには</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.udzura.jp/2009/11/10/activation-of-hatena-star/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.udzura.jp/2009/11/10/activation-of-hatena-star/" />
	</item>
	</channel>
</rss>
