11

クロムの新しいプロセス/コンテキストで新しいウィンドウを開きたいです(window.openで可能かどうかはわかりませんが、次の例では機能しています)現在、それが通常のウィンドウである場合は、次の例で確認して、ポップアップ ブロッカーが有効になっている

ar newWin = window.open(url);             

if(!newWin || newWin.closed || typeof newWin.closed=='undefined') 
{ 
     //POPUP BLOCKED
}

しかし、次のようにwindow.openなしで新しいプロセスで新しいウィンドウを開きたい

var prod = document.getElementById("myElement"); 
var aTag = document.createElement('a');
aTag.setAttribute('href',"http://cnn.com");
//THIS TWO LINES do the job
aTag.setAttribute('rel',"noreferrer");
aTag.setAttribute('target',"_blank");
prod.appendChild(aTag);
aTag.click();
prod.removeChild(aTag);

この参照で使用: http://news.softpedia.com/news/Force-Google-Chrome-to-Open-Links-in-New-Processes-128962.shtml

投稿から新しいコンテキストで新しいタブを開くには、次を使用する必要があります。

  aTag.setAttribute('rel',"noreferrer");
  aTag.setAttribute('target',"_blank");

これが機能している間、新しいウィンドウ/タブがポップアップブロッカーでブロックされることがあります。これを知りたいだけで、新しいウィンドウがブロックされていることを内部的にユーザーに通知し、それを有効にしてください...どのオプションがありますか?

私の要件はこれです:

  1. 新しいプロセス/コンテキストでウィンドウを開く
  2. ポップアップ ブロッカーがブロックされている場合は、ユーザーに通知します

それはどのように行うことができますか?

アップデート

クリックして既存のウィンドウから新しいウィンドウを開き、2 番目のウィンドウが開いて最初のウィンドウまたはソース ウィンドウに戻り、ブロックされた何かを実行したい場合に必要です。

これをシミュレートするには、この単純なファイルを作成できます

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>BlockTAB</title>
</head>

<br/>
<br/>
<button onclick="windowOpen('http://cnn.com')">window open native</button>
<br/>
<br/>
<button onclick="windowOpen('http://google.com')">sample</button>

<script>
    function windowOpen(url){
        window.open(url);
    }

</script>
</html>

今、次のことを行います

  1. プログラム (html ファイル) を実行すると、CNN タブが開きます。
  2. CNN タブを調べて、停止するまでブレークポイントを配置ます (ソースタブで JavaScript を見つけることができ、選択した任意の場所に配置します) (デバッガーが停止するまでページを更新する必要があります...
  3. 最初のタブに戻ると、2 つのボタンがあり、ブロックされていることがわかります。クリックなどの操作はできません。

最初の/ソースタブをブロックせずに新しいタブを開くにはどうすればよいですか?

更新 2

ポップアップ ブロッカーが発生しない場合は、ポップアップ ブロッカーをシミュレートする方法があります。

aTag.setAttribute('rel',"noreferrer"); aTag.setAttribute('target',"_blank");

この次のコードを前の例に追加します

<script src="https://cdn.jsdelivr.net/bluebird/3.4.5/bluebird.js"></script>
<br/>
<br/>
<button onclick="EnabledPPB('http://cnn.com')">Blocker</button>

function delayFN(url) {
    Promise.delay(500)
        .then(function() {
            var newWin = window.open(url);
        })
}

function EnabledPPB(url) {
    Promise.delay(100)
        .then(function() {
            delayFN(url);
        })

}
4

1 に答える 1