Как я могу закрыть окно с Javascript на Mozilla Firefox 3? - PullRequest
24 голосов
/ 17 апреля 2009

Мне нужно закрыть вкладку, которая отображает мою веб-страницу, одним нажатием кнопки. Но Firefox не позволяет закрыть окно с помощью JavaScript, если оно не открывается с помощью JavaScript. Если я установлю значение dom.allow_scripts_to_close_windows равным "true", то даже нормальное значение window.close() тоже будет работать. Но это не очень хорошее решение. (

Я попробовал следующее решение, предложенное на одном из форумов:

<script language="javascript" type="text/javascript">
function closeWindow() {
   window.open('','_parent','');
   window.close();
}
</script> 

Предполагается, что браузер вводит в заблуждение тот факт, что он действительно был открыт в javascript, но в Firefox 3 это не работает

Может кто-нибудь, пожалуйста, предложить обходной путь?

Ответы [ 7 ]

10 голосов
/ 01 июня 2009
function closeWindow() {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
    alert("This will close the window");
    window.open('','_self');
    window.close();
}

closeWindow();
7 голосов
/ 18 апреля 2009

В целях безопасности ваш скрипт не может закрыть окно / вкладку, которые он не открыл.

Решение состоит в том, чтобы представить подсказку возраста на более раннем этапе истории навигации. Затем вы можете разрешить им входить на ваш сайт или нет на основании их ввода.

Вместо того, чтобы закрывать страницу с предложением, вы можете просто сказать «Извините» или, возможно, перенаправить пользователя на его домашнюю страницу.

6 голосов
/ 20 августа 2009

Этот код работает как для IE 7, так и для последней версии Mozilla, хотя настройка по умолчанию в mozilla не позволяет закрыть окно через javascript.

Вот код:

функция F11 () { window.open ( '', '_ родитель', ''); window.open ("login.aspx", "", "channelmode"); window.close (); }

Чтобы изменить настройку по умолчанию:

1.Введите «about: config» в адресную строку Firefox и введите;

2. убедитесь, что ваши «dom.allow_scripts_to_close_windows» верны

2 голосов
/ 10 декабря 2009

self.close () не работает, вы уверены, что закрываете окно, а не сгенерированное скриптом всплывающее окно?

вы, ребята, можете посмотреть на это: https://bugzilla.mozilla.org/show_bug.cgi?id=183697

1 голос
/ 10 ноября 2010

Этот код определенно будет работать

function closing() {
var answer = confirm("Do you wnat to close this window ?");
    if (answer){
        netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserWrite');
        window.close();
    }
    else{
        stop;
    }
}
1 голос
/ 10 марта 2010

Если пользователи браузера видят в этом проблему безопасности и / или удобства использования, то ответ на ваш вопрос заключается в том, чтобы просто не закрывать окно, поскольку по определению они все равно найдут решения для вашего обходного пути. Есть хорошее суммирование о причинах выбора в базе данных ошибок Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=190515#c70

Так что вы можете сделать?

Измените спецификацию вашего сайта, чтобы у вас было решение для этих людей. Например, вы можете использовать это как возможность направить их партнеру.

То есть воспринимайте это как передачу кому-то еще, что (потенциально) нуждается в этом. Например, у Хансельмана недавно была статья о том, что делать в другой подобной ситуации, а именно 404 ошибки: http://www.hanselman.com/blog/PutMissingKidsOnYour404PageEntirelyClientSideSolutionWithYQLJQueryAndMSAjax.aspx

1 голос
/ 17 апреля 2009

С точки зрения взаимодействия с пользователем вы не хотите, чтобы основные действия выполнялись пассивно.

Что-то важное, например закрытие окна, должно быть результатом действия пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...