Εισαγωγή στην ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα» στις Συντομεύσεις σε iPhone ή iPad
Σχεδόν όλες οι ιστοσελίδες γράφονται σε JavaScript, μια γλώσσα προγραμματισμού που δημιουργεί δυναμικά εφέ σε προγράμματα περιήγησης στον Ιστό, συμπεριλαμβανομένων κινήσεων, διαδραστικών μενού, αναπαραγωγής βίντεο, και πολλών άλλων. Σε γενικές γραμμές, η JavaScript δεν εμφανίζεται σε εσάς κατά την προβολή ενός ιστότοπου. Ωστόσο, με τη δημιουργία συντόμευσης που περιέχει την ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα» και μετά με την εκτέλεση της συντόμευσης από την εφαρμογή «Safari», μπορείτε να ελέγχετε τη JavaScript μιας ιστοσελίδας.
Οι συντομεύσεις που εκτελούν την προσαρμοσμένη JavaScript σας σε μια ιστοσελίδα έχουν πάρα πολλές χρήσεις. Για παράδειγμα, μπορείτε να δημιουργήσετε συντομεύσεις που ανακτούν συγκεκριμένα δεδομένα από μια ιστοσελίδα και στη συνέχεια ενσωματώνουν αυτά τα δεδομένα σε μια εργασία, για παράδειγμα εξαγωγή προγράμματος τάξης και μετά προσθήκη του στην εφαρμογή «Ημερολόγιο» ή εξαγωγή των δεδομένων μελών μιας ομάδας κοινωνικής δικτύωσης και μετά εισαγωγή αυτών των δεδομένων σε ένα υπολογιστικό φύλλο.
Μπορείτε επίσης να δημιουργήσετε συντομεύσεις που σας επιτρέπουν να τροποποιήσετε μια ιστοσελίδα, π.χ. αλλαγή της γραμματοσειράς του κειμένου μιας ιστοσελίδας ή τροποποίηση της ταχύτητας αναπαραγωγής ενός βίντεο. Για εκτέλεση της JavaScript από μια συντόμευση, πρέπει να ενεργοποιήσετε τη ρύθμιση. Ανατρέξτε στην ενότητα Προηγμένες ρυθμίσεις Απορρήτου και ασφάλειας στις Συντομεύσεις σε iPhone ή iPad.
Για πληροφορίες σχετικά με τη χρήση συντομεύσεων που εκτελούν JavaScript σε ιστοσελίδα, δείτε Χρήση της ενέργειας «Εκτέλεση JavaScript σε ιστοσελίδα» στις Συντομεύσεις σε iPhone ή iPad.
Πληροφορίες για την ανάκτηση δεδομένων ιστοσελίδων
Η ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα» σάς επιτρέπει να ανακτάτε δεδομένα από μια ιστοσελίδα συλλέγοντας όλα τα στοιχεία που ταιριάζουν με συγκεκριμένα κριτήρια, και μετά να επαναλαμβάνετε αυτά τα στοιχεία για εκτέλεση μιας εργασίας με τα δεδομένα (ή για περαιτέρω επιθεώρηση των δεδομένων).
Για παράδειγμα, για να δημιουργήσετε μια λίστα κάθε στοιχείου εικόνας σε μια ιστοσελίδα, χρησιμοποιήστε:
var elements = document.querySelectorAll("img");
Σε ένα άλλο παράδειγμα, για ανάκτηση κάθε στοιχείου με την κλάση «post», χρησιμοποιήστε:
var elements = document.querySelectorAll(".post");
Μετά τη δημιουργία NodeList, μπορείτε να επαναλάβετε τα στοιχεία (για περαιτέρω φιλτράρισμα των στοιχείων ή για προσθήκη των στοιχείων σε δομή δεδομένων) χρησιμοποιώντας κάτι όπως:
var elements = ...;
for (let element of elements) {
// ...
}
Για περισσότερες πληροφορίες σχετικά με την υποβολή ερωτημάτων για αποτελέσματα ιστοσελίδας, δείτε https://developer.mozilla.org/Selectors και https://developer.mozilla.org/SelectorAll.
Είσοδος ενέργειας «Εκτέλεση JavaScript σε ιστοσελίδα»
Η είσοδος της ενέργειας «Εκτέλεση JavaScript σε ιστοσελίδα» πρέπει να είναι ενεργή ιστοσελίδα Safari, κάτι που σημαίνει ότι πρέπει να εκτελέσετε τη συντόμευση από το φύλλο κοινής χρήσης (ειδικότερα από Safari, SFSafariViewController ή ASWebAuthenticationSession).
Όταν η συντόμευση εκτελείται από το κοινόχρηστο φύλλο, η είσοδος από την εφαρμογή «Safari» μεταβιβάζεται στην πρώτη ενέργεια της συντόμευσής σας.
Αν και η είσοδος της ενέργειας «Εκτέλεση JavaScript σε ιστοσελίδα» πρέπει να είναι ενεργή ιστοσελίδα Safari, μπορείτε να εισαγάγετε επιπλέον δεδομένα στην ενέργεια χρησιμοποιώντας Μαγικές μεταβλητές. Για παράδειγμα, η συντόμευση Αλλαγή ταχύτητας βίντεο (διαθέσιμη στην Γκαλερί) περιέχει μια ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα» που τροποποιεί το βίντεο σε μια ιστοσελίδα. Ο ρυθμός αναπαραγωγής του βίντεο ελέγχεται από τη μεταβλητή «Ταχύτητα».
Για πληροφορίες σχετικά με την εκτέλεση συντομεύσεων από το Safari, δείτε Εκκίνηση συντόμευσης από μια άλλη εφαρμογή σε iPhone ή iPad.
Έξοδος ενέργειας «Εκτέλεση JavaScript σε ιστοσελίδα»
Για επιστροφή δεδομένων, πρέπει να καλέσετε τον χειριστή ολοκλήρωσης στη JavaScript, όπως completion(result)
. Λόγω του ότι η JavaScript χρησιμοποιείται συνήθως με ασύγχρονα μοτίβα, η κλήση είναι σκοπίμως μη σύγχρονη. Με αυτόν τον τρόπο, μπορείτε να ολοκληρώσετε την ενέργεια ασύγχρονα. Για παράδειγμα, τα εξής είναι έγκυρα:
window.setTimeout(function() {
completion(true);
}, 1000);
Η έξοδος της ενέργειας «Εκτέλεση JavaScript σε ιστοσελίδα» είναι οποιοσδήποτε έγκυρος τύπος δεδομένων JSON, συμπεριλαμβανομένων των:
Συμβολοσειρά
Αριθμός
Τιμή Boole (αληθές ή ψευδές)
Συστοιχία (που περιέχει οποιονδήποτε έγκυρο τύπο JSON)
Λεξικό (που περιέχει οποιονδήποτε έγκυρο τύπο JSON)
Null
Απροσδιόριστο
Στο παρασκήνιο, οι Συντομεύσεις κωδικοποιούν και αποκωδικοποιούν αυτόματα την τιμή επιστροφής για επικοινωνία μεταξύ της JavaScript και της εφαρμογής «Συντομεύσεις». Αυτό σημαίνει ότι δεν χρειάζεται να καλέσετε JSON.stringify(result)
πριν από την κλήση του χειριστή ολοκλήρωσης.
Λόγω του ότι η τιμή επιστροφής είναι JSON, συγκεκριμένες τιμές επιστροφής δεν θα λειτουργούν καλά. Για παράδειγμα, μια συνάρτηση ή ένας Κόμβος δεν θα έχει χρήσιμη αντιπροσώπευση με κωδικοποίηση JSON. Σε τέτοια περίπτωση, συνιστάται να δημιουργήσετε Συστοιχία/Λεξικό που περιέχει τις τιμές συμβατές με JSON που χρειάζεστε.
Σημείωση: Λόγω του ότι ένα αντικείμενο σε JavaScript είναι απλώς ένα λεξικό, τα βασικά αντικείμενα μετατρέπονται ικανοποιητικά σε JSON.
Αν δεν θέλετε να επιστρέφεται κανένα δεδομένο από την ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα», μπορείτε να καλέσετε τη συνάρτηση completion()
χωρίς κανένα όρισμα στη συνάρτηση (διότι το undefined
είναι έγκυρη έξοδος). Αυτό είναι ταυτόσημο με την κλήση completion(undefined)
.
Για περισσότερες πληροφορίες σχετικά με το JSON, δείτε την ενότητα Εισαγωγή στη χρήση JSON στις Συντομεύσεις σε iPhone και iPad.
Για περισσότερες πληροφορίες ως προς τους κόμβους, επισκεφθείτε στη διεύθυνση https://developer.mozilla.org/Node.
Για περισσότερες πληροφορίες ως προς τις συναρτήσεις, επισκεφθείτε στη διεύθυνση https://developer.mozilla.org/Functions.
Χρονικό όριο ενέργειας «Εκτέλεση JavaScript σε ιστοσελίδα»
Όπως όλες οι επεκτάσεις JavaScript στο Safari, κάθε περίσταση της ενέργειας «Εκτέλεση JavaScript σε ιστοσελίδα» υπόκειται σε χρονικό όριο και πρέπει να ολοκληρωθεί όσο το δυνατόν συντομότερα. JavaScript που χρησιμοποιεί μη σύγχρονες συναρτήσεις ενδέχεται να μην ολοκληρωθεί έγκαιρα, όπως:
window.alert()
window.prompt()
window.confirm()
Χρονικά όρια που διαρκούν πολλά δευτερόλεπτα—για παράδειγμα:
window.setTimeout(function() { completion(); }, 5000);
Αν η JavaScript υπερβαίνει το χρονικό όριο, η συντόμευση δεν θα καταφέρει να ολοκληρωθεί και ένα μήνυμα σφάλματος «Λήξη χρονικού ορίου JavaScript» θα εμφανιστεί κατά την εκτέλεση της συντόμευσης.
Χειρισμός σφαλμάτων σύνταξης και χρόνου εκτέλεσης
Μπορείτε να χρησιμοποιήσετε οποιαδήποτε σύνταξη που υποστηρίζεται στο Safari για εγγραφή JavaScript στην ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα».
Στην εφαρμογή «Συντομεύσεις», η ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα» σάς βοηθά να εντοπίζετε σφάλματα πραγματοποιώντας έναν βασικό έλεγχο σύνταξης προτού εκτελέσετε τη συντόμευση από την επέκταση Safari.
Καθώς εισαγάγετε το σκριπτ σας στο πεδίο κειμένου, η επισήμανση της σύνταξης σάς βοηθά να διασφαλίσετε ότι η JavaScript είναι έγκυρη. Για παράδειγμα, αν ξεχάσετε να συμπεριλάβετε εισαγωγικά στο τέλος μιας συμβολοσειράς, επισημαίνεται όλο το κείμενο μετά τη συγκεκριμένη συμβολοσειρά.
Αν η σύνταξη του σκριπτ σας είναι έγκυρη αλλά περιέχει σφάλμα χρόνου εκτέλεσης, η ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα» εντοπίζει και εμφανίζει τις εξαιρέσεις. Για παράδειγμα, αν το σκριπτ σας αναφέρει μεταβλητή ή συνάρτηση που δεν υπάρχει (όπως shortcuts.completion()
), εμφανίζεται ένα σφάλμα κατά τον χρόνο εκτέλεσης.