Ответ 1
function closeWindow() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
alert("This will close the window");
window.open('','_self');
window.close();
}
closeWindow();
Мне нужно закрыть вкладку, которая отображает мою веб-страницу, одним нажатием кнопки. Но 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.
Кто-нибудь может предложить обходное решение?
function closeWindow() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserWrite");
alert("This will close the window");
window.open('','_self');
window.close();
}
closeWindow();
Из соображений безопасности ваш script не может закрыть окно/вкладку, которую он не открыл.
Решение заключается в представлении приглашения по возрасту в более ранней точке истории навигации. Затем вы можете разрешить им вводить ваш сайт или нет на основе их ввода.
Вместо того, чтобы закрывать страницу с приглашением, вы можете просто сказать "Извините" или, возможно, перенаправить пользователя на свою домашнюю страницу.
Этот код работает как для 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" является истинным
self.close() не работает, вы уверены, что закрываете окно, а не всплывающее окно script?
вы, возможно, захотите посмотреть на это: https://bugzilla.mozilla.org/show_bug.cgi?id=183697
С точки зрения пользовательского опыта вы не хотите, чтобы какое-либо важное действие выполнялось пассивно.
Что-то важное, как закрытие окна, должно быть результатом действия пользователя.
Если пользователи браузера рассматривают это как проблему безопасности и/или удобства использования, то ответ на ваш вопрос заключается в том, чтобы просто не закрыть окно, так как по определению в любом случае они найдут решения для вашего обходного пути. Есть хорошее суммирование о том, почему выбор был в базе данных ошибок firefox https://bugzilla.mozilla.org/show_bug.cgi?id=190515#c70
Итак, что вы можете сделать?
Измените спецификацию своего сайта, чтобы у вас было решение для этих людей. Например, вы можете использовать его как возможность направить их к партнеру.
То есть, рассматривайте его как передачу обслуживания кому-то другому, который (потенциально) нуждается в нем. Например, у Хансельмана была недавняя статья о том, что делать в другой подобной ситуации, а именно 404 ошибки: http://www.hanselman.com/blog/PutMissingKidsOnYour404PageEntirelyClientSideSolutionWithYQLJQueryAndMSAjax.aspx
Этот код будет работать определенно
function closing() {
var answer = confirm("Do you wnat to close this window ?");
if (answer){
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserWrite');
window.close();
}
else{
stop;
}
}