0

新しいウィンドウでフォームを開くためのリンクを作成する必要があるという要件があります。同じリンクをクリックすると、既存のウィンドウに再びフォーカスされます。

これは次のコードでうまく機能します

<input type="button" value="Click" onclick = "return OpenWindow();"/>

<script>
var win = null;
function OpenWindow()
{
   if (win == null || win.closed)
   {
      win = window.open('http://localhost/Conditions.aspx', 'Condition');
   }
   win.focus();
   return false;
}
</script>

しかし、別のページに切り替えて、リンクのあるページに戻ると、問題が発生しました。変数winは以前の参照を保持しません。リンクをもう一度クリックすると、既存のウィンドウが更新され(これは私が望むものではありません!)、次にフォーカスします。

変数参照を保持する方法はありますか?または誰かがこの問題を解決する方法を知っていますか?

4

2 に答える 2

2

チア、あなたの問題は、JSがページ間で持続しないことです。HTMLはステートレスであるため、2ページ目と3ページ目に移動した後、一番上にあるJSも1ページで行ったことを「忘れる」必要があります。

文字列と数値を保存し、他のページでそれらを取得する方法はありますが、それはあなたが探しているものではありません。

そしてそのために、現在の設定では実際にできることは何もありません。

子参照を保持できるようにするさまざまな方法があります(メインページのiFrame内でメインページのナビゲーションを実行します...本当に必要な場合は...またはページの変更でAJAXを実行します。ブラウザ、およびより悪いJSエンジンを備えたブラウザには昔ながらのナビゲーションを使用します)。

ただし、window2を開いて、window1をpage3にポイントするリンクをクリックしても、page3にwindow2への参照があるようにすることはできません。

于 2012-10-12T02:46:04.920 に答える
2

私は同じ問題を抱えていて、ウィンドウが開いていない場合にのみWindow.openで解決されました

リンクがクリックされたときにウィンドウを更新するのではなく、基本的にフォーカスしたい場合は、親ウィンドウを閉じたり、再度開いたり、変更したりしても、これでうまくいきます。

私はクッキーを使うことに頼ろうとしていました。

于 2012-11-16T22:41:54.483 に答える