8

私はこのJSコードを持っています:

window.open(loginurl, '_blank');

たとえば、条件から来る:

if (userloggedin) {

//popup another page

} else {

window.open(loginurl, '_blank');

}

「loginurl」は、新しいウィンドウで開きたいログインURLです。

問題:これはポップアップのように動作するため、ほとんどのブラウザ(FirefoxおよびChrome)でブロックされます。

ログインURL変数を引き続き利用する(if elseステートメントを変更しない)ソリューションが必要です。ポップアップがブロックされているという警告なしに、新しいウィンドウで開きます。

私は方法を探していますが、解決策を見つけることができませんでした。誰かがいくつかのヒントや洞察を提供できる場合。それは大歓迎です。

ありがとう。

4

2 に答える 2

12

によって開かれたウィンドウwindow.openは、ユーザーアクションが開始せずに関数がトリガーされたときに、ブラウザによってブロックされるポップアップと常に見なされます。

これは、たとえば、これらがブロックされないことを意味します。

$('a').on('click.open', function(e) { e.preventDefault(); window.open('http://disney.com') });

Chromeでは他のイベントでポップアップをトリガーすることもできますが、Firefoxではこれを許可しません。

$(document).on('keydown', function(e) { window.open('http://stackexchange.com') });

そして、これはブロックされます:

$(document).ready(function() { window.open('http://stackoverflow.com') });

したがって、ユーザーアクションの後にトリガーしない限りwindow.open、ウィンドウがブロックされないことを確認することはできません。

于 2013-02-01T09:28:17.403 に答える
0

この方法では、ポップアップがブロックされません。

$.ajax({
    url:"url",
    dataType: "text",
    cache: false,
    success: function(data){
        window.open('url','_self');
   }
});
于 2017-01-07T16:24:52.150 に答える