У меня был тот же вопрос, но я нашел относительно простое решение.
В JavaScript я проверял window.opener !=null;
, чтобы определить, было ли окно всплывающим. Если вы используете какой-то похожий код обнаружения, чтобы определить, является ли окно, в котором вы отображаете сайт, всплывающим, вы можете легко "отключить его" , если хотите открыть " новое окно * с использованием новых окон JavaScript.
Просто поместите это в верхней части страницы, чтобы вы всегда были "новым" окном.
<script type="text/javascript">
window.opener=null;
</script>
Я использую это на странице входа в систему моего сайта, чтобы пользователи не получали всплывающее окно, если они используют всплывающее окно для перехода на мой сайт.
Вы можете даже создать простую страницу перенаправления, которая делает это и затем переходит на URL, который вы ей дали. Что-то вроде
JavaScript на родительской странице:
window.open("MyRedirect.html?URL="+URL, "_blank");
А затем, используя небольшой javascript из здесь , вы можете получить URL и перенаправить на него.
JavaScript на странице перенаправления:
<script type="text/javascript">
window.opener=null;
function getSearchParameters() {
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}
function transformToAssocArray( prmstr ) {
var params = {};
var prmarr = prmstr.split("&");
for ( var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = tmparr[1];
}
return params;
}
var params = getSearchParameters();
window.location = params.URL;
</script>