現在、HTMLとJavaScriptを使用したプログラミング構築において
別ウィンドウで開いているページにある処理を反映させたいのですが、うまくできずに困っています。
まず、以下のページがあります。
PageA.aspx
<td class="image">
<a href onclick="if(win_closed(window.ABC))openwin(1)" >窓OPEN</a><br />
</td>
<td class="image">
<a href onclick="alert(win_closed(window.ABC))" >窓CHECK</a><br />
</td>
PageB.aspx
<td class="image">
<a href onclick="openwin(2)" >確認</a><br />
</td>
WinCheck.js
function win_closed(winOj) {
var ua = navigator.userAgent
if (!!winOj)
if ((ua.indexOf('Gecko') != -1 || ua.indexOf('MSIE 4') != -1)
&& ua.indexOf('Win') != -1)
return winOj.closed
else return typeof winOj.document != 'object'
else return true
}
function openwin(obj) {
ABC = window.open("", "ABC", "");
if (obj == 1) {
ABC.window.location = "../Redirect?pageName=1";
}
if (obj == 2) {
ABC.window.location = "../Redirect?pageName=2";
}
if (obj == 3) {
ABC.window.location = "../Redirect?pageName=3";
}
ABC.focus()
}
PageAにある「窓OPEN」をクリックするとopenwin関数へ飛び、別ウィンドウでページが開きます。
「窓CHECK」をクリックすると、先ほど開いたウィンドウが存在しているときは「false」、
存在していないときは「true」とアラートを表示します。
(上記のウィンドウ有無判定関数は以下のページを参考にしました。
http://www.fureai.or.jp/~tato/DHTML/simple/part3/cross/winclosed.htm)
PageBはPageAから同ウィンドウ上でアクセスページであり、PageAと同様にクリックするとopenwin関数へ飛び、
別ウィンドウでページを開かせる命令を記述しました。
やりたいこととしては、PageAの「窓CHECK」をクリックすることで行えるウィンドウの有無の確認を
PageBから開いた別ウィンドウにも適用させることです。
PageBから別ウィンドウでページを開いた後にPageAに戻って「窓CHECK」をクリックした際に、
別窓でページを開いているので「false」というアラートを出したいのですが、
「true」と表示されてしまいます。
なお、PageBから別ウィンドウでページを表示させた後、PageAの「窓OPEN」をクリックしてから、
「窓CHECK」をクリックすると、「false」になります。
PageA、Page共に同じjsファイルアクセスさせ、なおかつアクセスするウィンドウのターゲットも同じにしているのですが、
何が原因かわからず、行き詰ってしまいました。
解決方法、アドバイス等ございましたら何卒ご教授願います。
開発環境:
Visual studio Premium 2010