11

ユーザーがショッピングカートにアイテムを追加すると、新しいタブでストアが開きます。奇妙なことに、さまざまなWebサイトで十分です。

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

jsでこれをチェックする方法はありますか?タブを開いたことを追跡できると思いますが、両方のページにpingを実行するなどのajaxリクエストを行わずに、カートにアイテムを追加する間に閉じられなかったことを確認する方法がわかりません。これはやり過ぎのようです。

では、ブラウザのタブがすでに開いているかどうかをどのように確認するのでしょうか。

ソリューションで編集:最初:

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

それで:

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

4 に答える 4

14

window.open次のパラメータがあります。var tab = window.open(url, name, specs, replace) 同じものを使用している限りname、URLはそのウィンドウ/タブにロードされます。

tab記述子/参照(上記)を保持したい場合はwindow.open、ユーザーがページを更新すると、その参照は失われます。

于 2012-11-16T22:46:08.987 に答える
1

あなたの最善の策はセッションストレージ/ローカルストレージかもしれないと思いますが、それは新しいブラウザでのみ機能します。

于 2012-11-16T22:40:24.123 に答える
0

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

于 2012-11-16T22:50:00.687 に答える
0

私は各ステップを経て、いくつかのポイントを思いついた。IEでテストしました。(htp://www.google.com)のようなURLを使用すると期待どおりに機能せず、ドメインページを使用すると機能しました。

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>
于 2014-04-09T14:27:45.957 に答える