Подтвердить что ты не робот

Проверьте, запрещен ли блокировщик всплывающих окон при открытии новой вкладки

Я хочу открыть новое окно в новом процессе/контексте в chrome, (не уверен, возможно ли это с помощью 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");

Пока это работает, иногда новое окно/вкладка блокируется блокировщиком всплывающих окон, я просто хочу знать это и информировать пользователя внутри, что новое окно заблокировано и, пожалуйста, включите его... какой вариант У меня есть?

Мои требования:

  • Открыть окно в новом процессе/контексте
  • если блокировщик всплывающих окон заблокирован, уведомит пользователя

Как это можно сделать?

UPDATE

Мне нужно это с тех пор, как вы нажмете, чтобы открыть новое окно из существующего окна, и откроется второе окно, и вы вернетесь в первое/исходное окно, и вы хотите сделать что-то заблокировано!

Чтобы имитировать это, вы можете создать этот простой файл

<!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>

Теперь сделайте следующее

  • Запустите программу (html файл), откройте вкладку CNN
  • просмотрите вкладку CNN и поставьте точку останова на ней (на вкладке источника вы можете найти javascript, поместить его в любом месте, которое вы выберете), , пока он не остановится (вам нужно обновить страницу, пока не увидите, что отладчик останавливается...
  • Теперь вернемся к первой вкладке, когда две кнопки находятся, и вы видите, что она заблокирована, вы не можете делать ничего подобного клику и т.д.

Как обрабатывать открытую новую вкладку, не блокируя вкладку first/source?

ОБНОВЛЕНИЕ 2

Есть способ имитировать блокировщик всплывающих окон, если это не происходит с кодом с

aTag.setAttribute( 'отн', "noreferrer" ); aTag.setAttribute( 'цель', "_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);
        })

}
4b9b3361

Ответ 1

Не уверен, что вы хотите открыть новое окно или новый процесс, так что, возможно, я отвечу обоим.

Если вы в буквальном смысле означаете, что хотите, чтобы Chrome запустил новый процесс, в Javascript нет способа сделать это, даже код, показанный с помощью window.open. Однако, поскольку Chrome открывает новый процесс для каждой вкладки, можно с уверенностью предположить, что ваше сообщение находится в новом процессе, пока ваш пользователь использует Chrome. С другой стороны, проверка того, какой браузер использует ваш пользователь, возможна. Хотя ваш пользователь все еще может подделать пользовательский агент (т.е. Браузер), его должно быть достаточно для внутреннего использования.

Дополнительная ссылка на Chrome с использованием нового процесса вместо нового потока для каждой вкладки.

Если вы хотите, чтобы ваш пользователь открыл ваше сообщение в новом окне, единственным вариантом является window.open. Вы можете запустить window.open, добавив прослушиватель событий или просто используя атрибут onclick в HTML. Не существует способа сделать только один HTML, и не должно быть никаких оснований искать ответ, если вы уже нашли способ сделать это с помощью javascript?