カテゴリー
未分類

window.openで開いてないウインドウの参照

ふと疑問です。でwindow.openしていないwindowとか、openerでもない、parentでもないwindowって参照できるのでしょうか??


うまく説明できないのだけど、たとえばAとBというwindowがあるとして
1)AからBを開いて、BからAを参照(これはできる)
2)Bだけが存在してる状態からAの有無を確認してAがない場合はAを開く。Aがある場合はAを制御する。
3)AとBがそれぞれ別のwindowから開かれている状態でBからAを参照する。
ちなみにAが以下ので開かれる場合は
winObj = window.open(“url”,”winName”);
とかでwinObjで取れますが、これってBのwindowからwinObjの名前で参照ってできるのだろうか?
またAが通常遷移の中で表示された場合
testName = this;
すれば、それ自身の中では
testName .moveTo(100,100);
とかで参照可能ですが、これを別のwindowから参照したかったりします。
なんかできたような気がするのだけど、いまいち思い出せませぬ・・・。

「window.openで開いてないウインドウの参照」への10件の返信

自己レス・・・虚ろな記憶をたどってこんな感じかな??
とりあえずメモ。明日検証してみるの巻き。
mother—–
<script type=”text/javascript”>
this.name = “win_mother”;
winThis = this;
function check(){
winThis.moveTo(200,200);
win2 = window.open(“”,”win_child”);
win2.moveTo(100,100);
win2.focus();
}
</script>
—-
child—-
<script type=”text/javascript”>
function checkMother(){
win1 = window.open(“”,”win_mother”);
win1.moveTo(100,100);
win1.focus();
}
</script>
—-

あ・・・まてまて、これだとchildからmotherの有無を確認できないじゃねえか!? えーっと、えーっとインスタンス名じゃなく、ウインドウ名で参照ってできなかったけな?
最悪タイマーでチェックとかになるのかな・・・?なんかきれいにできないんだろうか?

んーっとこんなもんかな?
—-
function checkMother(){
win1 = window.open(“”,”win_mother”);
if(win1.location==”about:blank”){
win1.location = “index.html”;
}
win1.moveTo(100,100);
win1.focus();
}
—-
いやー機種依存ありそうだけど・・・

こんなのは?
window.openerとwindow.opener.closedを使ったサンプル。
親が居れば自分を閉じて親ウィンドウに任意のページを表示。
親が居なければ新しいウィンドウに任意のページを表示。
function checkMother(){
var backUrl = “home.html”;
if(window.opener&&!window.opener.closed){
window.opener.location.href = backUrl;
window.close();
}else{
window.open(backUrl);
window.close();
}
}

あ、条件としてopenerじゃない場合もあるので使えないんです。それで悩んでおりますです。

windowの名前だけ取れればいいの?
AとBっていうウィンドウ名が分かってれば、
A.alert(“もた”);
みたいにすればいいんじゃなくて?
どうしても変数で取得したいの?
ごめん、よくわからんちん w

windowの名前で命令出せるの?インスタンス名じゃなくって??
別に変数でやりたいわけじゃないけど、インスタンス名って他に取得方法が思いついてないだけ・・・(;´Д`)


AとBっていうウィンドウ名が分かってれば、
A.alert(“もた”);
みたいにすればいいんじゃなくて?

こんなことってそもそもできる?単純にundefinedな変数になりません?

このサンプルの場合は単純に前の行で
newWin = window.open(“”,”test”);
って変数newWinにインスタンス名を代入しているから
次の行で
newWin.alert(“OpenSpace”);
って指定できるんだと思うすよ。
これが
test.alert(“OpenSpace”)
ってwindowNameで指定できれば楽なんだけどねえ・・・。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です