Я хочу открыть новое окно в новом процессе/контексте в 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);
})
}