1. 程式人生 > >window.open方法被瀏覽器攔截的處理方式

window.open方法被瀏覽器攔截的處理方式

  • 問題現象

    當我們在一個 ajax 回撥中執行 window.open 方法時,新頁面會被瀏覽器攔截。

  • 原因

    在 Chrome 的安全機制裡,非使用者直接觸發的 window.open 方法,是會被攔截的。

  • 處理
    $('#jump-btn').on('click', function () {
      // 開啟一個空標籤頁(此處不會被攔截)
      var newTarget = window.open();
      $.ajax({
        data: data,
        success: function (url) {
          // 修改新視窗的 url
          newTarget.location.href = url;
        }
      })
     });

    總之,在使用者互動時首先開啟一個空標籤頁,隨後在回撥函式中更改 href 即可。