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

Проверьте, открыто ли окно open.open

У меня есть html-страница. В теле страницы я вызываю событие onload, которое вызывает функцию javascript, чтобы открыть всплывающее окно. вот код:

var newWindow = null;
function launchApplication()
{
    if ((newWindow == null) || (newWindow.closed))
    {
        newWindow = window.open('abc.html','','height=960px,width=940px');
    }
}

когда я перехожу на другую страницу и снова вернусь на эту страницу, всплывающее окно снова открывается, хотя оно уже открыто. Пожалуйста, направляйте меня в правильном направлении, чтобы, если всплывающее окно уже открыто, оно не должно открываться снова. Я пробовал document.referred, но для этого нужен сайт онлайн, в настоящее время я работаю в автономном режиме.

4b9b3361

Ответ 1

newWindow = window.open('abc.html','com_MyDomain_myWindowForThisPurpose','height=960px,width=940px');

Дайте окну имя. Основываясь на названии на вашем домене, как это, предотвращает вероятность того, что вы выбрали имя, которое кто-то другой выбрал.

Никогда не создавайте имя, начинающееся с _, оно зарезервировано для специальных имен, которые браузер обрабатывает по-разному (так же, как с атрибутом "target" элементов привязки).

Обратите внимание, что если окно этого имени было открыто с различными параметрами (например, с разной высотой), то он сохранит эти параметры. Параметры здесь будут действовать, только если нет окна с таким именем, поэтому вы создадите новый.

Edit:

Обратите внимание, что "имя" относится к окну, а не к содержимому. Это не влияет на заголовок (newWindow.document.title повлияет на это, так как, конечно, будет код в abc.html). Это влияет на другие попытки делать вещи через окна. Следовательно, другое window.open с тем же именем будет повторно использовать это окно. Также ссылка, подобная <a href="def.html" target="com_MyDomain_myWindowForThisPurpose">clicky!</a>, будет повторно использовать ее. Нормальные оговорки о браузерах, сопротивляющихся открытию окна в различных сценариях (всплывающее блокирование), применяются.

Ответ 2

Чтобы открыть окно и сохранить ссылку на него между обновлением страницы.

var winref = window.open('', 'MyWindowName', '', true);
if(winref.location.href === 'about:blank'){
    winref.location.href = 'http://example.com';
}

или в формате функции

function openOnce(url, target){
    // open a blank "target" window
    // or get the reference to the existing "target" window
    var winref = window.open('', target, '', true);

    // if the "target" window was just opened, change its url
    if(winref.location.href === 'about:blank'){
        winref.location.href = url;
    }
    return winref;
}
openOnce('http://example.com', 'MyWindowName');

Ответ 3

Вы можете проверить, открыто или закрыто окно, повторно назначив ссылку на нее при ее закрытии. Пример:

var newWindow;
var openWindow = function(){
    newWindow = newWindow || window.open('newpage.html');
    newWindow.focus();
    newWindow.onbeforeunload = function(){
        newWindow = null;
    };
};