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

Как закрыть окно с помощью Javascript в Mozilla Firefox 3?

Мне нужно закрыть вкладку, которая отображает мою веб-страницу, одним нажатием кнопки. Но 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.

Кто-нибудь может предложить обходное решение?

4b9b3361

Ответ 1

function closeWindow() {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
    alert("This will close the window");
    window.open('','_self');
    window.close();
}

closeWindow();

Ответ 2

Из соображений безопасности ваш script не может закрыть окно/вкладку, которую он не открыл.

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

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

Ответ 3

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

Вот код:

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

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

1.type "about: config" в адресной строке firefox и введите

2. Убедитесь, что ваш "dom.allow_scripts_to_close_windows" является истинным

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

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

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

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

Ответ 7

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

function closing() {
var answer = confirm("Do you wnat to close this window ?");
    if (answer){
        netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserWrite');
        window.close();
    }
    else{
        stop;
    }
}