-1

奇妙なクエリがあります。asp.net、Jqueryを使用してブラウザ/タブを閉じたときに、新しいウィンドウ(ポップアップ)を開きたいのですが、ウィンドウをブロックするポップアップブロッカーをバイパスしたいのですが、誰か助けてくれますか?これ、ユーザーがブラウザ/タブを閉じたときにポップアップを開く方法、または同じことを達成するのに役立つ他の方法を教えてください。主な問題は、ポップアップブロッカーを無視したいということです。1つのSOポスト

私は以下の例を読んだことが役立つかもしれません:

jQuery(function($) {
  // This version does work, because the window.open is
  // during the event processing. But it uses a synchronous
  // ajax call, locking up the browser UI while the call is
  // in progress.
  $("#theButton").click(function(e) {
    e.preventDefault();
    $.ajax({
      url:      "http://jsbin.com/uriyip",
      async:    false,
      dataType: "json",
      success:  function() {
        window.open("http://jsbin.com/ubiqev");
      }
    });
  });
});

クリックイベントをに置き換えました$(window).unloadが、それも役に立ちませんでした。ポップアップは開きませんが、e.preventDefault();ポップアップを削除すると開きますが、ポップアップブロッカーを有効にする必要があります。

4

3 に答える 3

3

ポップアップ ブロッカーを回避する方法はないと思います。

アプローチを変更して、実際のブラウザー ウィンドウのポップアップを使用する代わりに、 jQuery UI モーダル ダイアログ ボックスでコンテンツを開くようにしてください。

于 2012-09-27T16:38:02.633 に答える
1

と同じ関数内でウィンドウを開く必要があります$.ajax。そうしないと、一部のブラウザーはポップアップを拒否します。

jQuery(function($) {
  // This version does work, because the window.open is
  // during the event processing. But it uses a synchronous
  // ajax call, locking up the browser UI while the call is
  // in progress.
  $("#theButton").click(function(e) {
    // use success flag
    var success = false;
    e.preventDefault();
    $.ajax({
      url:      "http://jsbin.com/uriyip",
      async:    false,
      dataType: "json",
      success:  function() {
          success = true; // set flag to true
      }
    });
    if (success) { // and read the flag here
        window.open("http://jsbin.com/ubiqev");
    }
  });
});

uriyipこれは、読み込みが完了したときに が呼び出され、ウィンドウがポップアップすることを確認する唯一の信頼できる方法です。そのため、ブラウザがフリーズします。

于 2012-09-28T09:59:18.923 に答える
0

ポップアップ ブロッカーは、この動作を防ぐように設計されています。

実際のブラウザ ウィンドウではなく、モーダル ウィンドウを使用することをお勧めします。これらはページ自体で開かれているため、ブロックされるとは思いません。

イベントに関しては...次のようなことができます...

window.onbeforeunload = function whatever() {
       //Do code here for your modal to show up.
 }

警告を発したり、できることをしたいだけなら

window.onbeforeunload = function showWarning() {
       return 'This is my warning to show';
 }
于 2012-09-27T16:59:14.340 に答える