0
votes

Comment fermer la page Web seule en cliquant sur un bouton

J'ai une page où un <button> est conservé sur lequel l' onClick() déclenche et redirige la nouvelle page dans un nouvel onglet. En attendant, je veux que la page parent se ferme dès que le <button> est cliqué avec l'ouverture de la nouvelle page dans un nouvel onglet. C'est essentiellement pour une fonction de sécurité pour le site Web. Comment cela peut-il être fait? Voici mon <button> , faites-moi savoir où puis-je me corriger.

<button formtarget="_blank" type="submit" name="submit" onClick="javascript:window.open('quiz.php?unit_id=<?php echo $fnc->encode($unit_id) ; ?>');self.close();" value="submit" class="btn btn-info" style='margin-left: 35%;margin-bottom: 10px;' ><i class="glyphicon"></i> Start Quiz</button>


6 commentaires

Si votre script n'a pas lancé l'ouverture de la fenêtre (avec quelque chose comme window.open), alors le script de cette fenêtre n'est pas autorisé à la fermer. Vérifiez cette question stackoverflow.com/questions/25937212/...


Attendez que cliquer sur le bouton ouvre un nouvel onglet et vous souhaitez fermer l' ancien onglet en même temps. À moins que je ne manque quelque chose, pourquoi ne pas simplement ouvrir l'URL dans le même onglet?


@VLAZ Merci pour une réponse rapide. J'apprécie. Oui, je souhaite fermer la fenêtre actuelle en cliquant sur le bouton et en ouvrant la nouvelle fenêtre dans un nouvel onglet.


@Ansh Mais pourquoi ouvrir un nouvel onglet et fermer celui en cours? Pourquoi ne pas rediriger dans le même onglet? Vous semblez faire la même chose efficacement. Sans explication - cela semble inutile ou un problème XY .


@VLAZ C'est un module de quiz en ligne et je ne veux pas que l'utilisateur revienne sur une autre page tout en essayant le quiz.


@Ansh donc c'est un problème XY alors. Vous devriez pouvoir effacer l'historique du bouton de retour. En outre, vous pouvez configurer le serveur pour qu'il envoie des en-têtes sans cache et invalide ceux déjà envoyés. Je ne sais pas comment moi-même, mais j'ai vu cette technique utilisée où vous soumettez une page et en revenant, vous obtenez un message "La page est obsolète" sous une forme ou une autre, donc c'est faisable. C'est également assez courant - je l'ai vu à quelques endroits. Il y a probablement d'autres choses que vous pouvez faire. Mais votre question devrait être "comment puis-je empêcher les utilisateurs de revenir en arrière". À tout le moins, fermer une page signifie qu'elle peut être rouverte


4 Réponses :


0
votes

vous pouvez fermer la fenêtre par la fonction ci-dessous

function close(){
 setTimeout("window.close()", 500);
}

Mais gardez à l'esprit que: Les scripts peuvent fermer uniquement les fenêtres qui ont été ouvertes.


1 commentaires

N'utilisez pas de chaînes dans setTimeout - passez une fonction. Une chaîne appelle eval ce qui n'est pas nécessaire. Laissons de côté les aspects de sécurité, à un niveau encore plus basique, c'est tout simplement mauvais du point de vue de la maintenabilité. Et prenons même la version la plus basique de cela - la coloration syntaxique ne fonctionnera pas dans l'éditeur de votre choix. Il y a juste de plus en plus de problèmes dans la chaîne à partir de là et le passage d'une chaîne ne résout rien d'autre que de raccourcir légèrement le code en omettant (au mieux) de taper function() { }



0
votes

La fenêtre se ferme et ouvre un nouvel onglet

dom.allow_scripts_to_close_windows = true

Si vous utilisez Firefox, vous devriez environ: config en écrivant la barre d'URL et en définissant

<script language="javascript">

function quitWindow(cmd) 
{      
    if(window.open("your_new_tab_page.htm")){
        if (cmd=='quit')    
        {
           open(location, '_self').close();    
        }   
    }
    return false;   
}

</script>

<input  type="submit" onclick="return quitWindow('quit');" value="Close This Window and open new Tab" /> 

sinon ne fonctionne pas firefox


3 commentaires

Merci, j'ai essayé cela, mais la page Web actuelle ne se ferme pas. Peut-on faire autre chose?


@Ansh Si vous utilisez firefox, vous devez configurer about: config en écrivant la barre d'url et définir dom.allow_scripts_to_close_windows = true sinon ne fonctionne pas firefox


Merci pour cela. Mais pouvez-vous me montrer dans le code ci-dessus?



0
votes

Je pense que cela pourrait fonctionner.

    <script>

    function openWindow( url )
    {
            window.open(url, '_blank');
            window.focus();
            window.close();
    }

    </script>
    <button onclick="javascript:openWindow(yourHref);return false;">Submit</button>


2 commentaires

pouvez-vous m'expliquer cette réponse mentionnée ci-dessus? Je veux dire window.open(url, '_blank', "shilpijain" ,"modal=no"); , Je n'ai pas pu obtenir cette partie.


@Ansh window.open (URL, nom, spécifications (facultatif) , remplacer (facultatif) ) refer - des fonctionnalités w3s peuvent également être ajoutées., Window.open (url, windowName, [windowFeatures]); se référer - ici



0
votes

Vous ne pouvez pas fermer votre page Web si l'utilisateur a cliqué sur le lien de votre site Web à partir d'un autre endroit que votre site Web, pour des raisons de sécurité.

Les scripts peuvent fermer les sites ouverts uniquement par des scripts


0 commentaires