Como posso fechar uma janela do navegador sem receber o prompt Deseja fechar esta janela ?
O prompt ocorre quando eu uso a window.close();
função.
Como posso fechar uma janela do navegador sem receber o prompt Deseja fechar esta janela ?
O prompt ocorre quando eu uso a window.close();
função.
Respostas:
window.open('', '_self', ''); window.close();
Isso funciona para mim.
showModalDialog
? Não funciona no IE10
Meu amigo ... há uma maneira, mas "hack" não começa a descrevê-la. Basicamente, você tem que explorar um bug no IE 6 e 7.
Funciona sempre!
Em vez de chamar window.close()
, redirecione para outra página.
Página de abertura:
alert("No whammies!");
window.open("closer.htm", '_self');
Redirecione para outra página. Isso engana o IE para permitir que você feche o navegador nesta página.
Página de fechamento:
<script type="text/javascript">
window.close();
</script>
Incrível né ?!
Os scripts não têm permissão para fechar uma janela aberta por um usuário. Isso é considerado um risco de segurança. Embora não esteja em nenhum padrão, todos os fornecedores de navegadores seguem isso ( documentos do Mozilla ). Se isso acontecer em alguns navegadores, é um bug de segurança que (idealmente) é corrigido muito rapidamente.
Nenhum dos hacks nas respostas a esta pergunta funciona mais, e se alguém surgisse com outro hack sujo, eventualmente ele também pararia de funcionar.
Eu sugiro que você não gaste energia lutando contra isso e adote o método que o navegador oferece de forma tão útil - pergunte ao usuário antes de você aparentemente travar sua página.
Aqui está a função Javascript que uso para fechar o navegador sem Prompt ou Aviso, também pode ser chamada a partir do Flash. Deve estar em arquivo html.
function closeWindows() {
var browserName = navigator.appName;
var browserVer = parseInt(navigator.appVersion);
//alert(browserName + " : "+browserVer);
//document.getElementById("flashContent").innerHTML = "<br> <font face='Arial' color='blue' size='2'><b> You have been logged out of the Game. Please Close Your Browser Window.</b></font>";
if(browserName == "Microsoft Internet Explorer"){
var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;
if (ie7)
{
//This method is required to close a window without any prompt for IE7 & greater versions.
window.open('','_parent','');
window.close();
}
else
{
//This method is required to close a window without any prompt for IE6
this.focus();
self.opener = this;
self.close();
}
}else{
//For NON-IE Browsers except Firefox which doesnt support Auto Close
try{
this.focus();
self.opener = this;
self.close();
}
catch(e){
}
try{
window.open('','_self','');
window.close();
}
catch(e){
}
}
}
showModalDialog
. Ligado closeWindows
, abre uma nova janela (a mesma página) enquanto a anterior ainda está aberta.
Isso funciona no Chrome 26, Internet Explorer 9 e Safari 5.1.7 ( sem o uso de uma página auxiliar, como resposta de Nick):
<script type="text/javascript">
window.open('javascript:window.open("", "_self", "");window.close();', '_self');
</script>
O aninhado window.open
serve para fazer com que o IE não exiba a mensagem Deseja fechar esta janela prompt .
Infelizmente, é impossível fazer o Firefox fechar a janela.
Na tag body:
<body onload="window.open('', '_self', '');">
Para fechar a janela:
<a href="javascript:window.close();">
Testado no Safari 4.0.5, FF para Mac 3.6, IE 8.0 e FF para Windows 3.5
Por razões de segurança, uma janela só pode ser fechada em JavaScript se tiver sido aberta por JavaScript. Para fechar a janela, você deve abrir uma nova janela com _self
como destino, que sobrescreverá sua janela atual, e então fechá-la (o que você pode fazer já que foi aberta via JavaScript).
window.open('', '_self', '');
window.close();
A partir daqui :
<a href="javascript:window.opener='x';window.close();">Close</a>
Você precisa definir window.opener
algo, caso contrário, ele reclama.
window.open('', '_self', '').close();
Lamento um pouco tarde aqui, mas encontrei a solução, pelo menos para o meu caso. Testado no Safari 11.0.3 e Google Chrome 64.0.3282.167
Por causa dos aprimoramentos de segurança no IE, você não pode fechar uma janela a menos que ela seja aberta por um script. Portanto, a maneira de contornar isso será deixar o navegador pensar que a página foi aberta usando um script e, em seguida, fechar a janela. Abaixo está a implementação.
Experimente, funciona como um encanto!
javascript fecha a janela atual sem prompt do IE
<script type="text/javascript">
function closeWP() {
var Browser = navigator.appName;
var indexB = Browser.indexOf('Explorer');
if (indexB > 0) {
var indexV = navigator.userAgent.indexOf('MSIE') + 5;
var Version = navigator.userAgent.substring(indexV, indexV + 1);
if (Version >= 7) {
window.open('', '_self', '');
window.close();
}
else if (Version == 6) {
window.opener = null;
window.close();
}
else {
window.opener = '';
window.close();
}
}
else {
window.close();
}
}
</script>
Crie uma função JavaScript
<script type="text/javascript">
function closeme() {
window.open('', '_self', '');
window.close();
}
</script>
Agora escreva este código e chame a função JavaScript acima
<a href="Help.aspx" target="_blank" onclick="closeme();">Help</a>
Ou simplesmente:
<a href="" onclick="closeme();">close</a>
Isso vai funcionar:
<script type="text/javascript">
function closeWindowNoPrompt()
{
window.open('', '_parent', '');
window.close();
}
</script>
window.opener=window;
window.close();
Coloque o seguinte código no ASPX.
<script language=javascript>
function CloseWindow()
{
window.open('', '_self', '');
window.close();
}
</script>
Coloque o código a seguir no código por trás do evento de clique do botão.
string myclosescript = "<script language='javascript' type='text/javascript'>CloseWindow();</script>";
Page.ClientScript.RegisterStartupScript(GetType(), "myclosescript", myclosescript);
Se você não tiver nenhum processamento antes de fechar, poderá colocar diretamente o seguinte código no próprio ASPX na tag de clique do botão.
OnClientClick="CloseWindow();"
Espero que isto ajude.
Na minha situação, o código a seguir foi embutido em um arquivo php.
var PreventExitPop = true;
function ExitPop() {
if (PreventExitPop != false) {
return "Hold your horses! \n\nTake the time to reserve your place.Registrations might become paid or closed completely to newcomers!"
}
}
window.onbeforeunload = ExitPop;
Então eu abri o console e escrevi o seguinte
PreventExitPop = false
Isso resolveu o problema. Portanto, descubra o código JavaScript e encontre a (s) variável (es) e atribua-lhes um "valor" apropriado que, no meu caso, era "falso"
Vou postar isso porque é o que estou usando atualmente no meu site e funciona no Google Chrome e no IE 10 sem receber nenhuma mensagem pop-up:
<html>
<head>
</head>
<body onload="window.close();">
</body>
</html>
Tenho uma função em meu site que desejo executar para salvar uma variável on / off para a sessão sem ir diretamente para uma nova página, então eu apenas abro uma pequena página pop-up. Essa página da web se fecha imediatamente com a onload="window.close();"
função.
a
com target=_blank
para abrir uma pequena janela pop-up em um url específico e, finalmente, uso JS para fechar a janela. O objetivo é que a url específica salve um valor para a sessão para desabilitar as imagens de fundo, embora aqui em breve irei excluí-la em favor do ajax assim que descobrir como fazer ajax. (ainda aprendendo as cordas persay)
window.open('','_self').close()