Проблема с window.close и хромом

Я пытаюсь закрыть дочернее окно с помощью JavaScript, и в Firefox все работает нормально, но в Chrome окно не закрывается.

Вот что я использую

$(document).ready(function() {
    if (window.opener && !window.opener.closed)
        window.opener.location = "http://www.website.com"
    window.close();
});

Я попробовал совет на google, но но безрезультатно.

Кто-нибудь сталкивался с подобной проблемой или знает обходной путь?


person mrpatg    schedule 09.01.2010    source источник


Ответы (6)


Я знаю, что этот вопрос старый, но я столкнулся с той же проблемой. Это сработало для меня:

window.open('', '_self', ''); //bug fix
window.close();
person Warren Benedetto    schedule 25.03.2010
comment
Да, это работает и для меня. @Patrick должен пометить это как ответ. - person Bill Paetzke; 02.04.2010
comment
@Long Я думаю, потому что исправление ошибки вышло из строя с первым window.open(), поэтому его следует отложить. @Уоррен Спасибо. - person Jeaf Gilbert; 24.06.2010
comment
Насколько перспективно это решение? Кто-нибудь знает, почему это работает? Я думал, что общее правило заключается в том, что вы не можете закрыть окно, которое не было открыто с помощью JavaScript. - person Walter Stabosz; 03.04.2012
comment
@WalterStabosz Если вы напрямую используете window.close(), то это не сработает, потому что можно закрыть только вкладку, открытую из javascript. Итак, мы открываем какой-то пустой URL-адрес в том же окне, а затем пытаемся закрыть его с помощью javascript, и это работает! - person Parixit; 02.07.2013
comment
Я не могу заставить это работать; Я открыл дочернее окно с помощью LyteBox, и я могу отправить обратно в главное окно с помощью parent.document, но тогда он просто игнорирует window.close, что странно, поскольку дочернее окно было открыто с помощью JavasScript в первую очередь . - person Marc Wilson; 02.11.2013
comment
Кажется, я больше не могу заставить его работать, если только я не обслуживаю страницу локально. - person cjm; 27.07.2016

Если ранее вы открыли какое-то другое окно window.open()

Это не работает:

window.open(...)
window.open('', '_self', '');
window.close();

Но работает:

window.open(...);
setTimeout(function(){
    window.open('', '_self', '');
    window.close();
}, 100);
person Maxim D. Kuznetsov    schedule 14.04.2010

Что-то вроде этого также должно работать:

setTimeout(function() {
    window.close();
},50);
person Max Kramnik    schedule 05.05.2010
comment
У меня не работает - не ошибка, просто ничего не делает. - person Marc Wilson; 02.11.2013

Я думаю, что он работает в режиме Chrome Kiosk (полноэкранный). Пробовал успешно.

person nembleton    schedule 23.04.2012

top.window.close() работает для меня. Протестировано в IE, FF, Chrome, Safari и Opera.

person Ron    schedule 14.06.2013

Это сработало для меня

var win = window.open("about:blank", "_self");
win.close();
person Gerardo Abdo    schedule 03.12.2014