3

リンクがクリックされたときに jQuery を使用して呼び出される次のコード行があります。

  alipayTransactionModalTrigger.click(function(e) {  
     e.preventDefault();             
     $.ajax({
        url: "doSomething",
        data: "p_locale=en-US",
        success: function(dataOut){
           if (dataOut == "hold") {
              ...do something...
           } else {   
              //open a modal over parent window
              alipayTransactionModal.dialog("open"); 
              //also open new tab/window
              var Payment = window.open("http://www.alipay.com", "Payment");                  
              Payment;                
              Payment.focus();
           }
        }
     });    
     return false;
  });

ajax 呼び出しは、基本的にいくつかの値をチェックするだけです。サクセス コールは正常に行われていますが、それは問題ではありません。フレーム名を使用して、リンクが複数回クリックされたときに、新しく開いたウィンドウ/タブを強制的に更新しようとしています。これは IE 8、Chrome、および Firefox で機能します。ユーザーはリンクを何度でもクリックでき、新しいウィンドウが開くのは 1 回だけです。その後クリックすると、そのウィンドウがリロードされます。

ただし、これは IE 9 では発生しません。IE 9 は毎回新しいウィンドウ/タブを開きます。IE 9 でこの動作を強制する方法はありますか? または、これが IE 9 で発生している理由の説明だけでも素晴らしいでしょう。それはユーザー レベルの設定ですか? 私が知る限り、IE9 は、フレーム名を .xml で使用するときに、何を指しているのかわかりませんwindow.open()

私が言及すべきもう1つのこと.focus()-2回目/3回目/などのクリックに常にウィンドウがフォーカスされるとは限りません(ブラウザーとブラウザーの設定に依存するようです)-しかし、私はすでにその質問をここ で行っています。

ありがとう

4

2 に答える 2

1

ajax コールバックから window.open でウィンドウを開くと、ポップアップ ブロッカーによってブロックされる運命にあります。無効にすると、期待どおりに機能すると思います。

ここでこの回答を確認してください。Window.open がブロックされました ウィンドウには適切なコンテキストが必要です。

于 2013-02-13T17:25:01.357 に答える
0

テスト用のIE9はありませんが、これが役立つかもしれません

var openLink = (function() {
    var _popups = {};

    return function(link, name) {
        if (_popups.hasOwnProperty(name) === false) {
            _popups[name] = window.open();
        }

        _popups[name].location.href = link;
        _popups[name].focus();
    };
}());

于 2013-02-11T23:05:00.023 に答える