YAHOO.util.Event.addListener(window,"beforeunload",this.exit_prompt,this,true) --> false?

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: Super-Moderators, WebDev Moderators

Απάντηση
Άβαταρ μέλους
philos
Δημοσιεύσεις: 260
Εγγραφή: 30 Αύγ 2007 23:32

YAHOO.util.Event.addListener(window,"beforeunload",this.exit_prompt,this,true) --> false?

Δημοσίευση από philos » 28 Ιουν 2016 05:35

Παιδιά καλησπέρα!

Λοιπόν, αντιμετωπίζω το εξής πρόβλημα (έχω σαρώσει όλο το διαδίκτυο με τις φτωχές μου γνώσεις και λύση δεν έχω βρει).
Λοιπόν, η μηχανή vBulletin χρησιμοποιεί τον CKEditor (bbcode editor) για να γράφεις κείμενα.
Τον έχω ενσωματώσει και σε ένα custom addon μου.

Για διάφορους λόγους, κάνω submit τη φόρμα μέσω javascript (jquery $.post) και μετά κάνω redirect με window.location.
Το θέμα είναι ότι όταν πάει ο browser να κάνει το redirect, ΑΝ έχει γραφτεί κείμενο τον editor, εμφανίζεται παραθυράκι που λέει ότι υπάρχουν δεδομένα που δεν έχουν αποθηκευτεί και αν θέλουμε να παραμείνουμε στη σελίδα ή να συνεχίσουμε.

Ψάχνοντας στο διαδίκτυο, βρήκα και τέσταρα ότι το αρχείο της vbulletin:
/clientscript/vbulletin_textedit.js
... έχει τον εξής κώδικα:

Κώδικας: Επιλογή όλων

YAHOO.util.Event.addListener(window,"beforeunload",this.exit_prompt,this,true)
... στον οποίο αν γυρίσεις το true σε false, το πρόβλημα διορθώνεται!

Με δεδομένο ότι στη σελίδα μου φορτώνεται (ως το default headinclude του vbulletin με το css, τα js κτλ) είτε το θέλω είτε όχι και αυτό το αρχείο με την τιμή στο true, μπορώ μα προσθέσω μέσα στη σελίδα μου έναν custom κώδικα javascript - πχ αφού έχει φορτωθεί το αρχείο, ώστε να γυρίσω την τιμή σε false;
Με άλλα λόγια θέλω να διορθώσω το πρόβλημα χωρίς να πειράξω το αρχείο js, και μόνο για τη συγκεκριμένη περίπτωση - φόρτωση σελίδας (script).

ΥΓ: Μπορείτε να βρείτε ολόκληρο τον κώδικα του αρχείου js, εδώ.

Ευχαριστώ :D

alou
Script Master
Δημοσιεύσεις: 1374
Εγγραφή: 24 Αύγ 2007 19:52
Επικοινωνία:

YAHOO.util.Event.addListener(window,"beforeunload",this.exit_prompt,this,true) --> false?

Δημοσίευση από alou » 28 Ιουν 2016 09:16

Δοκίμασε να κάνεις  YAHOO.util.removeListener(window,"beforeunload",this.exit_prompt,this,true) - λογικά θα θέλει το ίδιο signature στις παραμέτρους αν και δεν έχω ιδέα σε τι scope αναφέρεται το this εκεί και λογικά προσδιορίζεται από το περιβάλλον που καλείται - αλλά αν δε δουλεύει ακριβώς έτσι, ψάξε yui remove event listeners για documentation.

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

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης