Μήνυμα Javascript πριν κλείσετε το παράθυρο. JavaScript - Αντικείμενο παραθύρου: Άνοιγμα και κλείσιμο παραθύρων. Τι χρησιμοποιήσαμε για να το δοκιμάσουμε;

Με έχουν ήδη ρωτήσει αρκετές φορές πώς να χειριστώ το κλείσιμο μιας καρτέλας. Ας υποθέσουμε ότι ένας χρήστης θέλει να κλείσει τον ιστότοπό σας και εσείς δημιουργείτε κάποιο αναδυόμενο παράθυρο και ρωτάτε: " Είσαι σίγουρος?", ή ανακατεύθυνση σε άλλο ιστότοπο. Φυσικά, αυτές οι μέθοδοι είναι πολύ ενοχλητικές για τους χρήστες, γι' αυτό συνιστώ να μην τις χρησιμοποιήσετε. Ευτυχώς, τα προγράμματα περιήγησης το χειρίζονται επίσης πολύ άσχημα, ωστόσο, υπάρχουν ακόμα ορισμένες επιλογές για το χειρισμό του κλεισίματος της καρτέλας.

Είναι δυνατόν να ρωτήσετε τον χρήστη: " Είναι σίγουρος ότι θέλει να κλείσει τη σελίδα;". Δείτε πώς μπορείτε να εφαρμόσετε αυτήν την επεξεργασία κλεισίματος καρτελών:


window.onbeforeunload = function() (
επιστρέψτε "Κάτι να πείτε στον χρήστη"
}

Αυτός ο κώδικας θα λειτουργεί σε Firefox, IE, Chrome, αλλά δεν θα λειτουργεί στο Opera (αυτό το πρόγραμμα περιήγησης δεν επεξεργάζεται καθόλου πριν από τη φόρτωση). Σε αυτήν την περίπτωση, η ίδια η συνάρτηση επεξεργασίας μπορεί να επιστρέψει μόνο μια συμβολοσειρά, δηλαδή, καμία ανακατεύθυνση δεν θα λειτουργήσει εκεί.

Η συμβολοσειρά που επιστράφηκε θα εμφανιστεί στο παράθυρο επιβεβαίωσης στο Chrome και στο IE. Αυτή η γραμμή δεν εμφανίζεται στον Firefox.

Το "onbeforeunload event δεν εμφανίζει κείμενο που παρέχεται από τον ιστότοπο, μόνο τυπικό μήνυμα", αν κρίνουμε από τα σχόλια, τελικά και αμετάκλητα. Από αυτή την άποψη, ήθελα να γράψω λίγο για την ιστορία του θέματος.

Πολλοί άνθρωποι γνωρίζουν ότι χάρη στο onbeforeunload, μπορείτε να ζητήσετε από τον χρήστη να μην εγκαταλείψει μια ιστοσελίδα εάν έχει μη αποθηκευμένα δεδομένα (για παράδειγμα, γραμμένα σε μια φόρμα, αλλά δεν έχει στείλει μήνυμα στο φόρουμ). Για να το κάνετε αυτό, απλώς προσθέστε κάτι σαν αυτό το JavaScript:
window.onbeforeunload = συνάρτηση (evt) ( var message = "Το έγγραφο "foo" δεν έχει αποθηκευτεί. Θα χάσετε τις αλλαγές εάν αποχωρήσετε από τη σελίδα."; if (typeof evt == "undefined") ( evt = window.event ; ) if (evt) ( evt.returnValue = μήνυμα; ) επιστροφή μηνύματος;)
Μετά από αυτό, ιδανικά, εάν ο χρήστης θέλει να φύγει από τη σελίδα (με οποιονδήποτε τρόπο - κλείστε την καρτέλα, κλείστε ολόκληρο το πρόγραμμα περιήγησης, φορτώστε ξανά τη σελίδα, εισαγάγετε μια νέα διεύθυνση στη γραμμή διευθύνσεων, μεταβείτε σε έναν σελιδοδείκτη κ.λπ.), θα δείτε ένα αίτημα επιβεβαίωσης και η έξοδος από τη σελίδα μπορεί να ακυρωθεί. Προηγουμένως, αδίστακτοι συντάκτες ιστότοπου προσπάθησαν να χρησιμοποιήσουν αυτό το παράθυρο για να ξεγελάσουν τον χρήστη και να τον κρατήσουν στη σελίδα, για παράδειγμα, χρησιμοποιώντας το κείμενο "Κάντε κλικ στο OK για να συνεχίσετε να εργάζεστε με τον ιστότοπο και στο Άκυρο για να κλείσετε" (στην πραγματικότητα, τα κουμπιά λειτούργησαν από κοντά). Ή ακόμα και κάτι πιο τρομακτικό όπως "Κάντε κλικ στο OK για να επιβεβαιώσετε τη χρέωση 1.000 $ στην πιστωτική σας κάρτα."

Στη συνέχεια, τα προγράμματα περιήγησης έγιναν σοφότερα και άρχισαν να προσθέτουν βοηθητικό κείμενο για να κάνουν πιο δύσκολο να εξαπατήσουν τον χρήστη. Για παράδειγμα, δείτε πώς το κάνει ο IE8:

Σχεδόν παρόμοιο κείμενο ήταν στον Firefox 3:


Αν τα διαβάσετε όλα, γίνεται σαφές τι ανέφερε ο ιστότοπος και τι ανέφερε το πρόγραμμα περιήγησης. Ωστόσο, μπορείτε ακόμα να εξαπατήσετε.


Εδώ βλέπουμε μια σαφή περιγραφή των ενεργειών απευθείας στα κουμπιά. Είναι ήδη αρκετά δύσκολο να πείσεις τον χρήστη να κάνει κλικ στο «Αποχώρηση» για να μείνει και στο «Μείνε» για να φύγει. Κατά τη γνώμη μου, η λύση είναι ιδανική και αυτό το θέμα μπορεί να κλείσει. Σε γενικές γραμμές, όπως γνωρίζετε, το απρόσωπο ΟΚ σε σχεδόν οποιοδήποτε παράθυρο διαλόγου θα πρέπει να αντικατασταθεί με το όνομα της ενέργειας (για παράδειγμα, "Διαγραφή αρχείων", "Αναζήτηση", "Προσθήκη γραμμής", "Άνοιγμα αρχείου" κ.λπ.), Αυτό μειώνει τον αριθμό των σφαλμάτων χρήστη, ακόμα κι αν έχετε τον πλήρη έλεγχο του κειμένου του διαλόγου.

Ποιο ήταν το δράμα με το bug 641509; Το γεγονός είναι ότι αυτή η επιβεβαίωση στον Firefox 4 και νεότερη έκδοση μοιάζει με αυτό:


Όπως μπορείτε να δείτε, το προσαρμοσμένο κείμενο έχει εξαφανιστεί εντελώς. Από την έκδοση 4, ο ιστότοπος δεν μπορεί να παράσχει κανένα πρόσθετο μήνυμα στον χρήστη ή να εξηγήσει γιατί συγκεκριμένα δεν θέλει να φύγει ο χρήστης. Ας πούμε, εάν εφαρμόζετε μια διεπαφή για εργασία με πολλά έγγραφα σε ένα παράθυρο και ένα από αυτά δεν είναι αποθηκευμένο, θα μπορούσατε να πείτε ποιο συγκεκριμένα, αλλά στον Firefox δεν θα το καταλάβετε αυτό. Ίσως δεν θέλετε να το αποθηκεύσετε και αν βλέπατε το μήνυμα, θα έφευγατε ήρεμα από τη σελίδα, αλλά διαφορετικά δεν ξέρετε τι συμβαίνει. Στο φύλλο

Σε αυτό το μάθημα, θα μάθουμε για τις διάφορες μεθόδους του αντικειμένου παραθύρου, οι οποίες σας επιτρέπουν να ανοίγετε και να κλείνετε παράθυρα, να προσδιορίζετε εάν ένα παράθυρο είναι κλειστό και επίσης να λαμβάνετε το εσωτερικό του όνομα κ.λπ.

Οι μέθοδοι του αντικειμένου παραθύρου είναι open() , close() , print() , focus() και blur() .

Σε αυτήν την ενότητα, θα εξετάσουμε τις ακόλουθες μεθόδους του αντικειμένου παραθύρου:

  • open() - σχεδιασμένο για άνοιγμα παραθύρων (καρτέλες).
  • close() - σχεδιασμένο να κλείνει παράθυρα. Χρησιμοποιείται κυρίως για το κλείσιμο των παραθύρων που ανοίγουν χρησιμοποιώντας τη μέθοδο open().
  • print() - έχει σχεδιαστεί για να εκτυπώνει τα περιεχόμενα του παραθύρου.
  • εστίαση() - έχει σχεδιαστεί για να μεταφέρει την εστίαση στο καθορισμένο παράθυρο.
  • blur() - έχει σχεδιαστεί για να αφαιρεί την εστίαση από το καθορισμένο παράθυρο.
μέθοδο open(). Έχει σχεδιαστεί για να ανοίγει ένα νέο παράθυρο (καρτέλα) στο πρόγραμμα περιήγησης και έχει την ακόλουθη σύνταξη:

Παράμετροι μεθόδου:

  • Η πρώτη παράμετρος καθορίζει τη διεύθυνση URL της σελίδας που πρέπει να φορτωθεί σε αυτό το παράθυρο. Εάν η τιμή αυτής της παραμέτρου δεν έχει καθοριστεί, θα εμφανιστεί μια κενή σελίδα (περίπου:κενή) στο παράθυρο.
  • Η δεύτερη παράμετρος της ανοιχτής μεθόδου καθορίζει την τιμή του χαρακτηριστικού στόχου ή το όνομα του παραθύρου. Υποστηρίζονται οι ακόλουθες τιμές:
    • _blank - Η διεύθυνση URL φορτώνεται σε νέο παράθυρο (καρτέλα). Αυτή είναι η προεπιλεγμένη τιμή;
    • _parent - Η διεύθυνση URL φορτώνεται στο γονικό πλαίσιο. Εάν δεν υπάρχει, τότε η διεύθυνση URL φορτώνεται στο τρέχον παράθυρο (καρτέλα).
    • _self - Η διεύθυνση URL φορτώνεται στο τρέχον παράθυρο.
    • _top - ακυρώνει όλα τα πλαίσια και φορτώνει τη διεύθυνση URL στο τρέχον παράθυρο του προγράμματος περιήγησης (καρτέλα). Εάν δεν υπάρχει, τότε η διεύθυνση URL φορτώνεται στο τρέχον παράθυρο (καρτέλα).
    • Μπορείτε επίσης να καθορίσετε το όνομα του παραθύρου που θα ανοίξει ως παράμετρος. Αυτό το όνομα είναι εσωτερικό και μπορεί να χρησιμοποιηθεί από προγραμματιστές ιστού για την κλήση συναρτήσεων και μεθόδων αυτού του παραθύρου.
  • Η τρίτη παράμετρος προορίζεται να καθορίσει ένα σύνολο ιδιοτήτων παραθύρου, οι οποίες εισάγονται διαχωρισμένες με κόμμα. Υποστηρίζονται οι ακόλουθες βασικές ιδιότητες παραθύρου:
    • αριστερά , επάνω - συντεταγμένες (σε pixel) της επάνω αριστερής γωνίας του παραθύρου του προγράμματος περιήγησης σε σχέση με την επάνω αριστερή γωνία της οθόνης. Οι τιμές αυτών των ιδιοτήτων πρέπει να είναι θετικές ή ίσες με 0.
    • ύψος, πλάτος - ύψος και πλάτος της περιοχής εργασίας του παραθύρου του προγράμματος περιήγησης. Κατά τον καθορισμό τιμών, είναι απαραίτητο να ληφθεί υπόψη ότι το πλάτος και το ύψος του παραθύρου του προγράμματος περιήγησης δεν μπορεί να είναι μικρότερο από 100 pixel.
    • Το resizable είναι μια ιδιότητα Boolean παραθύρου που έχει σχεδιαστεί για να ενεργοποιεί ή να απενεργοποιεί τη δυνατότητα αλλαγής μεγέθους του παραθύρου του προγράμματος περιήγησης. Αυτή η ιδιότητα δέχεται τις ακόλουθες τιμές: ναι ή 1 και όχι ή 0.
    • Το scrollbars είναι μια ιδιότητα Boolean παραθύρου που χρησιμοποιείται για την ενεργοποίηση ή απενεργοποίηση της εμφάνισης των γραμμών κύλισης για τα περιεχόμενα του παραθύρου του προγράμματος περιήγησης. Αυτή η ιδιότητα δέχεται τις ακόλουθες τιμές: ναι ή 1 και όχι ή 0.
    • Το status είναι μια ιδιότητα λογικής παραθύρου που προορίζεται να ενεργοποιήσει ή να απενεργοποιήσει την εμφάνιση της γραμμής κατάστασης του προγράμματος περιήγησης. Αυτή η ιδιότητα δέχεται τις ακόλουθες τιμές: ναι ή 1 και όχι ή 0.

Εξετάστε τα ακόλουθα παραδείγματα:

1. Ανοίξτε μια κενή σελίδα about:blank σε νέο παράθυρο. Αυτό το παράθυρο πρέπει να έχει πλάτος και ύψος 250 px:

Window.open("","","width=250,height=250");

2. Ανοίξτε την ιστοσελίδα "http://site/" στο τρέχον παράθυρο:

Window.open("http://site/", "_self");

3. Ανοίξτε ένα νέο παράθυρο με ορισμένες ιδιότητες (πάνω=100, αριστερά=100, πλάτος=400, ύψος=500, γραμμές κύλισης=ναι, resizabie=ναι):

Window.open("http://site", "_blank", "top=100, left=100, width=400, height=500, scrollbars=yes, resizable=yes");

Πώς να αλληλεπιδράσετε με ένα παράθυρο αφού ανοίξει;

Η μέθοδος open() σάς επιτρέπει όχι μόνο να ανοίξετε ένα παράθυρο, αλλά και να λάβετε έναν σύνδεσμο προς αυτό το παράθυρο. Αυτός ο σύνδεσμος σάς επιτρέπει να αλληλεπιδράσετε με αυτό το παράθυρο καλώντας ορισμένες ιδιότητες και μεθόδους. Εκείνοι. Μπορούμε να χρησιμοποιήσουμε κώδικα JavaScript που βρίσκεται σε ένα παράθυρο για να ελέγξουμε ένα άλλο παράθυρο.

Για παράδειγμα, για πρόσβαση στο αντικείμενο εγγράφου ενός ανοιχτού παραθύρου:

Ανοίξτε ένα κενό νέο παράθυρο και εμφανίστε κάποιο κείμενο σε αυτό:

Var myWindow = window.open("", "", "width=250, height=250"); myWindow.document.write("

Κάποιο κείμενο

");

Σημείωση: Μπορείτε να αλληλεπιδράσετε μόνο με παράθυρα που έχετε ανοίξει, δεν μπορείτε να εργαστείτε με άλλα παράθυρα.

μέθοδος close().

Έχει σχεδιαστεί για να κλείνει το παράθυρο. Αυτή η μέθοδος δεν έχει παραμέτρους. Συνήθως χρησιμοποιείται για το κλείσιμο παραθύρων που δημιουργούνται με τη μέθοδο open(). Διαφορετικά, όταν προσπαθείτε να κλείσετε ένα παράθυρο (καρτέλα) που άνοιξε ο ίδιος ο χρήστης (όχι από JavaScript), το πρόγραμμα περιήγησης, για λόγους ασφαλείας, θα ζητήσει από τον χρήστη επιβεβαίωση για την εκτέλεση αυτής της ενέργειας.

Για παράδειγμα, ας δημιουργήσουμε κουμπιά για το άνοιγμα και το κλείσιμο ενός παραθύρου με το όνομα myWindow:

//δημιουργούμε μια μεταβλητή στην οποία θα αποθηκεύουμε μια αναφορά στο αντικείμενο παραθύρου του ανοιχτού παραθύρου var myWindow. συνάρτηση myWindowOpen ( myWindow = window.open("http://www.yandex.ru", "myWindow", "width=250, height=250"); ) λειτουργία myWindowClose ( if (myWindow) ( myWindow.close() ; myWindow = null; ) ) Άνοιγμα παραθύρου Κλείσιμο παραθύρου

μέθοδο print().

Έχει σχεδιαστεί για να εκτυπώνει τα περιεχόμενα ενός παραθύρου. Αυτή η μέθοδος δεν έχει παραμέτρους.

λειτουργία myPrint() ( window.print(); ) Εκτύπωση σελίδας

μέθοδος εστίασης().

Έχει σχεδιαστεί για να δίνει εστίαση στο καθορισμένο παράθυρο. Αυτή η μέθοδος δεν έχει παραμέτρους.

μέθοδο blur().

Προορίζεται να αφαιρέσει την εστίαση από ένα καθορισμένο παράθυρο, π.χ. το μετακινεί στο παρασκήνιο. Αυτή η μέθοδος δεν έχει παραμέτρους.

συνάρτηση myWindowOpen() ( var myWindow = window.open("", "", "width=200,height=100"); ) function myWindowFocus() ( myWindow.focus(); ) function myWindowBlur() ( myWindow.blur (; ) Άνοιγμα παραθύρου Δώστε εστίαση στο παράθυρο Μετακίνηση παραθύρου στο φόντο

Ιδιότητες του αντικειμένου παραθύρου: όνομα, ανοιχτήρι, κλειστό.

Σε αυτήν την ενότητα, θα εξετάσουμε τις ακόλουθες ιδιότητες του αντικειμένου παραθύρου:

  • όνομα - προορίζεται να αποκτήσει ή να ορίσει το εσωτερικό όνομα του παραθύρου.
  • ανοιχτήρι - σας επιτρέπει να λάβετε στο τρέχον παράθυρο έναν σύνδεσμο προς το παράθυρο (αντικείμενο παραθύρου) από το οποίο άνοιξε αυτό το παράθυρο.
  • Το κλείσιμο είναι μια δυαδική ιδιότητα που επιστρέφει: true αν το παράθυρο είναι κλειστό και false αν το παράθυρο είναι ανοιχτό.
ιδιότητα ονόματος

Αυτή η ιδιότητα χρησιμοποιείται πολύ συχνά για την αλλαγή του εσωτερικού ονόματος ενός παραθύρου αφού είναι ήδη ανοιχτό. Επιπλέον, η ιδιότητα name μπορεί να επιστρέψει την τρέχουσα τιμή του εσωτερικού ονόματος του παραθύρου.

Το εσωτερικό όνομα του παραθύρου δεν είναι μια συμβολοσειρά που περικλείεται μεταξύ των ετικετών τίτλου ανοίγματος και κλεισίματος - είναι το όνομα του παραθύρου που προορίζεται για τον προγραμματιστή. Εκείνοι. αυτό το όνομα είναι αόρατο στο χρήστη.

Αυτό το όνομα χρησιμοποιείται κυρίως σε υπερσυνδέσμους και φόρμες για να υποδείξει το παράθυρο στο οποίο πρέπει να ανοίξει η σελίδα. Για παράδειγμα, για να υποδείξετε το εσωτερικό όνομα ενός παραθύρου σε έναν υπερσύνδεσμο, χρησιμοποιείται το χαρακτηριστικό target. Εάν το στοιχείο a έχει το χαρακτηριστικό target="searchWindow", τότε όταν κάνετε κλικ σε αυτόν τον σύνδεσμο, το πρόγραμμα περιήγησης προσπαθεί πρώτα να βρει ένα παράθυρο με ένα τέτοιο εσωτερικό όνομα (searchWindow), εάν δεν υπάρχουν παράθυρα με τέτοιο εσωτερικό όνομα, ανοίγει ένα νέο παράθυρο και το ονομάζει searchWindow . Και αν υπάρχει ένα παράθυρο με το ίδιο όνομα, τότε δεν ανοίγει ένα νέο παράθυρο, αλλά η σελίδα φορτώνεται ξανά χρησιμοποιώντας τον καθορισμένο σύνδεσμο σε αυτό το παράθυρο. Από προεπιλογή, τα παράθυρα του προγράμματος περιήγησης δεν έχουν εσωτερικό όνομα.

Για παράδειγμα, ας ανοίξουμε τη σελίδα "http://www.google.com/" σε ένα παράθυρο που ονομάζεται myWindow:

window.name = "myWindow";

Για παράδειγμα, ας ανοίξουμε ένα παράθυρο χρησιμοποιώντας τη μέθοδο open() και ας εμφανίσουμε το όνομά του σε αυτό:

var wnd = window.open("","myTest","width=200, height=300"); wnd.document.write("

Αυτό το παράθυρο έχει το όνομα: " + wnd.name + ".");

ακίνητο ανοιχτήρι

Αυτή η ιδιότητα σάς επιτρέπει να λάβετε σε ένα παράθυρο έναν σύνδεσμο προς το αρχικό παράθυρο (αντικείμενο παραθύρου), π.χ. στο παράθυρο από το οποίο άνοιξε το παράθυρο.

Για παράδειγμα, έχετε ένα πρωτότυπο παράθυρο (1), στο οποίο χρησιμοποιείτε τη μέθοδο open() για να ανοίξετε ένα άλλο παράθυρο (2). Σε αυτό το παράθυρο (2) μπορείτε να χρησιμοποιήσετε την ιδιότητα ανοίγματος για να λάβετε το παράθυρο (1).

συνάρτηση openMyWindow() ( var myWindow=window.open("","","width=200,height=200"); myWindow.document.write("Άνοιγμα παραθύρου (2)"); $(document).ready (function() ( updatefgallowPrompt(true); window.onbeforeunload = WarnUser; ) function WarnUser() ( var allowPrompt = getfgallowPrompt(); if(allowPrompt) ( saveIndexedDataAlert(); return null; ) else ( updatefgallowPrompt(t); .stopPropagation ) ) συνάρτηση saveIndexedDataAlert() ( var allowPrompt = getfgallowPrompt(); var lenIndexedDocs = parseInt($("#sortable3 > li").size()) + parseInt($("#sortable3 > ul").size( )); if(allowPrompt && $.trim(lenIndexedDocs) > 0) ( event.returnValue = "Το μήνυμά σας"; } else { event.returnValue = " "; updatefgallowPrompt(true); } } $(document).click(function(event) { $("a").live("click", function() { updatefgallowPrompt(false); }); }); function updatefgallowPrompt (allowPrompt){ //exit msg dfds $("body").data("allowPrompt", allowPrompt); } function getfgallowPrompt(){ return $("body").data("allowPrompt"); }!}

Μετά δούλεψε για μένα.

$(window).unload(function(event) ( if(event.clientY< 0) { //do whatever you want when closing the window.. } });

Window.onbeforeunload = συνάρτηση () (επιστροφή "Θέλετε πραγματικά να κλείσετε;");

Ίσως απλώς ένα πρόγραμμα χειρισμού συμβάντων πριν από τη φόρτωση στο πρόγραμμα χειρισμού συμβάντων υποβολής της φόρμας:

JQuery("form").submit(function() ( jQuery(window).unbind("beforeunload"); ... ));

2

Έχω μια γονική και μια παιδική σελίδα. η θυγατρική σελίδα άνοιξε σε νέα καρτέλα

Θέλω να εμφανίσω ένα προειδοποιητικό μήνυμα (η θυγατρική σελίδα κλείνει) όταν κλείνω τη θυγατρική καρτέλα.
Πώς να εμφανίσετε κλειστά μηνύματα κατά το κλείσιμο της καρτέλας; (Δεν είναι αναζωογονητικός χρόνος)

Χρησιμοποίησα OnUnload και onbeforeunload.
Οι δύο μέθοδοι καλούνται επίσης κατά την ανανέωση της σελίδας και το κλείσιμο καρτελών.

Window.onunload = συνάρτηση doUnload(e) (ειδοποίηση ("Το μικρό παράθυρο κλείνει..."); )

Window.onbeforeunload = συνάρτηση doUnload(e) ( ειδοποίηση ("Το μικρό παράθυρο κλείνει..."); )

Πρέπει να εμφανίσω το προειδοποιητικό μήνυμα, απλώς κλείστε την καρτέλα στο πρόγραμμα περιήγησης.

Βοήθησέ με. Ευχαριστώ εκ των προτέρων.

Χρησιμοποιώ το παρακάτω σενάριο. Λειτουργούσε σε IE. Αλλά δεν λειτούργησε στο FireFox

window.onbeforeunload = function() ( if ((window.event.clientX< 0) || (window.event.clientY < 0) || (window.event.clientX < -80)) { alert("Child window is closing..."); } };

Πώς να το πετύχετε αυτό στο FireFox και σε άλλο πρόγραμμα περιήγησης.

  • 4 απαντήσεις
  • Ταξινόμηση:

    Δραστηριότητα

1

Για αυτό το afaik δεν ήταν ποτέ ένα σενάριο cross browser. Η λύση είναι να ΜΗΝ βασίζεστε σε μη τεκμηριωμένες και μεταβλητές λειτουργίες ειδικά για το πρόγραμμα περιήγησης για να εντοπίσετε οτιδήποτε σημαντικό.

Εφόσον έχετε μια σελίδα CHILD, μπορείτε να ρυθμίσετε μια δοκιμή στον γονέα (ανοίγμα) που ελέγχει την ιδιότητα childWindowHandle.closed κατά διαστήματα και ενεργεί σε αυτό.

1

Υποθέτοντας ότι απλώς προσπαθεί να ενεργοποιήσει το συμβάν πριν από τη φόρτωση Crossbrowser, αυτό το κάνει σχεδόν (εκτός από την Opera)

Δοκιμάστε( // http://www.opera.com/support/kb/view/827/ opera.setOverrideHistoryNavigationMode("συμβατό"); history.navigationMode = "συμβατό"; )catch(e)() //Πού Η συνάρτηση F" Are You Going Message ReturnMessage() ( return "WTF!!!"; ) //UnBind Function function UnBindWindow() ( window.onbeforeunload = null; return true; ) //Bind Links που δεν θέλουμε να επηρεάσουμε το έγγραφο .getElementById("homebtn").onclick = UnBindWindow; document.getElementById("googlebtn").onclick = UnBindWindow; //Bind Exit Message Dialogue window.onbeforeunload = ReturnMessage;

0

Ίσως να μην μπορείτε να το κάνετε αυτό, εκτός από ορισμένες μεθόδους που βασίζονται σε cookie, οι οποίες είναι το έργο της ανάπτυξης εναλλακτικών λύσεων ως μη μόνιμα cookie. Η δεύτερη αναγνώριση της ανανέωσης σελίδας, της ανακατεύθυνσης βάσει φόρμας ή της αντίστροφης ανακατεύθυνσης ή του κλεισίματος του προγράμματος περιήγησης με απόρριψη συμβάντων δεν είναι απλή και κουραστική. Συνιστάται να μην εξαρτάστε από αυτό.

μπορείτε να κάνετε μερικά μικρά πράγματα πριν ο πελάτης κλείσει την καρτέλα. javascript εντοπισμός κλείσιμο καρτέλας προγράμματος περιήγησης/κλείσιμο του προγράμματος περιήγησης , αλλά αν η λίστα ενεργειών σας είναι μεγάλη και η καρτέλα κλείνει πριν ολοκληρωθεί, είστε αβοήθητοι. Μπορείτε να δοκιμάσετε, αλλά με την εμπειρία μου δεν εξαρτάται από αυτό. Ναι, δεν μπορείτε να κάνετε διαφοροποίηση, ενημέρωση και κλείσιμο αυτήν τη στιγμή. Επομένως, δεν υπάρχει αξιόπιστος τρόπος να πει κανείς εάν ένα παιδί είναι πραγματικά κλειστό.

Window.addEventListener("beforeunload", συνάρτηση (e) ( var confirmationMessage = "\o/"; /* Έχετε μικρό κωδικό ενέργειας εδώ */ (e || window.event).returnValue = επιβεβαίωσηMessage; //Gecko + IE Επιβεβαίωση επιστροφής Μήνυμα; //Webkit, Safari, Chrome ));