人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JavaScriptを使い、別のwindowをreloadさせようとしています。
別のwindowの名前はmainです。
どのように書けばいいでしょうか。
なお、mainは親ウインドウではありません。

●質問者: takeuchi_k
●カテゴリ:コンピュータ
✍キーワード:JavaScript ウインドウ 名前
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● t_akir
●10ポイント

http://www.tohoho-web.com/js/window.htm

ウィンドウ(Window)

’top.main.location.reload’ という指定ではダメですか?


もしくは、

opener.top.main

top.opener.top.main

opener.top.opener.top.main

など、’top’ と ’opener’ を組み合わせると、当たりがでると思います(笑)

自分もよく苦労しますので…。


2 ● rea8833
●20ポイント

http://www.tagindex.com/javascript/window/open1.html

JavaScript/ウィンドウ/サブウィンドウを開く(クリック時)Aタイプ - TAG index

サブウィンドウを開いた場合、下のように、サブウインドウの更新をすることが出来ます。


main1 = window.open(url, ”main”);


main1 = location.reload();

◎質問者からの返答

質問の意図が伝わっていないようです。舌足らずで申し訳ないです。

(1)mainがあり、「ログイン」というリンクがある

(2)ログインをクリックすると、ショウウインドウsubが開く。subにはパスワード入力フォームがある。

(3)subでパスワードを入力すると、cgiによる認証になり、認証をパスすると、subに「認証完了」という表示を出す。

(4)subに「閉じる」ボタンがあり、クリックするとsubが閉じ、mainだけが残る。

このような流れなのですが、3の段階で、mainをリロードさせたいのです。

「mainはsubの親ウインドウだから、window.openerでいいだろう」といわれそうですが、2から3の過程で一度画面が書き換わっているので、3の段階では、小ウインドウはmainの「孫」となっているのです。

パスワードが違ってサイド入力したりなどすると、何世代も子孫にある可能性があります。ですので、mainという名前のついている親ウインドウを決めうちでリロードする方法を知りたいのです。


3 ● typista
●20ポイント

http://www.yahoo.co.jp/

Yahoo! JAPAN

以下のような記述で良いでしょうか?


まず、以下をtest.htmlとして保存し、main.htmlは任意で作成してください。

test.htmlを開くとonLoadでmain.htmlがウィンドウオープンされます。

→ ウィンドウ名は”main”

※mainは親ウィンドウではありません


main.htmlの内容を適宜書き換えた後、test.htmlの「push me」ボタンを押下して、reloadされていることを確認してください。


<html>

<script language=”JavaScript”>


var newwin;


function winopen() {

newwin = window.open(”main.html”,”main”);

newwin.moveTo(0,0);

newwin.resizeTo(screen.width,screen.height);

}


function winreload() {

newwin.location.reload()

}


</script>


<body onLoad=”winopen()”>


<form>

<input type=”button” onClick=”winreload()” value=”push me” />

</form>


</body>

</html>

◎質問者からの返答

ありがとうございます。

でも、

’newwin.location’はNullまたはオブジェクトではありません

のエラーが出ます。


4 ● akibare
●20ポイント

http://dummy/

間違っていたらごめんなさい。Subの内容を何回書き換えてもwindowにおける親子関係は変わらないと思います。


例)main.htmlからlogin.htmlを開き、中身をsuccess.htmlにしてもwindow.openerはやはりmainです。


【main.html】

<html>

<head>

<script>

function openAuth()

{

window.open(”login.html”,”login”);

}

</script>

</head>

<body>

<button onClick=”openAuth()”>Login</button>

</body>

</html>


【login.html】

<html>

<head>

<script>

function login()

{

location.href=”success.html”;

}

</script>

</head>

<body>

クリックしてログイン


<button onClick=”login()”>Login</button>

</body>

</html>


【success.html】

<html>

<head>

<script>

function refreshMain()

{

window.opener.location.reload();

window.opener.document.body.innerHTML = ”Welcome!”;

}

</script>

</head>

<body onload=”refreshMain()”>

ログイン成功!


<button onClick=”window.close()”>Close</button>

</body>

</html>


実際にはsuccess.htmlは、login.htmlをsubmitした時にCGIでredirectするか、直接書いているかどちらかになるけど結果は同じだと思います。


CGIにて、一度subのウィンドウを*閉じている*ということであれば話は違いますが。。

◎質問者からの返答

ありがとうございます。

確かにそのとおりでした。subの名前は変わらず、window.opener.location.reload()で処理できました。

私の状況再現ミスにて、皆様にご迷惑をおかけいたしましたことをお詫びいたします。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ