2012-11-16 6 views
9

ユーザがショッピングカートに商品を追加すると、新しいタブで店舗が開きます。奇妙なことに別のウェブサイト。ブラウザタブが既に開いているので、余分なタブを作成していないか確認してください。

タブが既に開いているかどうかを確認して、更新されたカートで別のタブを開くのではなく、2番目のアイテムに再挿入したいと思います。

jsでこれを確認する方法はありますか?私はタブを開いたことを確認できると思いますが、カートにアイテムを追加する間にクローズしていないことを確認できません。両方のページをpingするなどのリクエストをしないでください。

ブラウザタブが既に開いているかどうかを確認するにはどうすればいいですか? まず:次に

var tab = window.open('http://google.com','MyTab'); 

:溶液で編集

if(tab) { 
    var tab = window.open('http://yahoo.com','MyTab'); 
} 
+3

私はあなたがしなければならないすべてがウィンドウに名前を付けることだと思います。 – Hemlock

+0

既に開いている場合は、タブにフォーカスを設定することもできます。 'var win = window.open( 'http://google.com'、 'tab'); if(win){ win.focus(); } ' – sohaiby

答えて

13

window.openは、次のパラメータがあります。

ディスクリプタ/リファレンス(上記のtab)を保持したい場合は、ユーザーがページをリフレッシュするとその参照が失われます。window.openが返されます。

+0

ねえ、これは動作します。私の質問を更新する – BobB

+0

理想的には、製品がサイトの別のページにあるため、ユーザーがいるページを超えてこれを維持することができます。 – BobB

+0

@BobBこれがあなたの質問に答えた場合は、左側のチェックマークをクリックしてそのようにマークします。 =) –

1

は、私はあなたの最善の策は、session storage/local storageことができると思いますが、それだけで、新しいブラウザで動作します。限り、あなたは同じname URLがそのウィンドウ/タブにロードされます使用してvar tab = window.open(url, name, specs, replace)

+0

私はユーザーがいるページを超えて永続したいと思っています。ありがとう – BobB

0

あなたが必要とするのは、開かれたタブへの参照を保存することです。これは、あなたに合ったIDに関連付けることができます。次に、再度開く必要があるときに、 window.openerの親ウィンドウまたはオープナーウィンドウ。また、子ウィンドウが閉じられたことを知るために、デフォルトのブラウザーイベント "beforeunload"があり、呼び出されたときに親の参照オブジェクトからウィンドウを取り除くことができるので、フォーカスだけでなく再オープンする必要があります。

0

私は各段階を経て、いくつかの点を思いつきました。 IEでテストしました。 URLのようなもの(htp://www.google.com)を使用して、ドメインページを使用すると正常に機能しませんでした。

FirefoxとChromeでうまくいきましたが。

次の例では動作しません:

<script type="text/javascript"> 
    function myfunction1() { 
     window.open('http://www.google.com', 'f'); 
    } 
    function myfunction2() { 
     window.open('http://www.yahoo.com', 'f'); 
    } 
</script> 
<body> 
    <form id="form2" runat="server"> 
    <div> 
     <a href="#" onclick='myfunction1();'>myfunction1</a> 
     <a href="#" onclick='myfunction2();'>myfunction2</a> 
    </div> 
    </form> 
</body> 
</html> 

次の例では動作します:

<script type="text/javascript"> 
     function myfunction1() { 
      window.open('WebForm1.aspx', 'f'); 
     } 
     function myfunction2() { 
      window.open('WebForm2.aspx', 'f'); 
     } 
</script> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <a href="#" onclick='myfunction1();'>myfunction1</a> 
     <a href="#" onclick='myfunction2();'>myfunction2</a> 
    </div> 
    </form> 
</body> 
</html> 
関連する問題