Εισαγωγή στην ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα» στις Συντομεύσεις
Σχεδόν όλες οι ιστοσελίδες γράφονται σε JavaScript, μια γλώσσα προγραμματισμού που δημιουργεί δυναμικά εφέ σε προγράμματα περιήγησης στον Ιστό, συμπεριλαμβανομένων κινήσεων, διαδραστικών μενού, αναπαραγωγής βίντεο, και πολλών άλλων. Σε γενικές γραμμές, η JavaScript δεν εμφανίζεται σε εσάς κατά την προβολή ενός ιστότοπου. Ωστόσο, με τη δημιουργία συντόμευσης που περιέχει την ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα» και μετά με την εκτέλεση της συντόμευσης από την εφαρμογή «Safari», μπορείτε να ελέγχετε τη JavaScript μιας ιστοσελίδας.
Οι συντομεύσεις που εκτελούν την προσαρμοσμένη JavaScript σας σε μια ιστοσελίδα έχουν πάρα πολλές χρήσεις. Για παράδειγμα, μπορείτε να δημιουργήσετε συντομεύσεις που ανακτούν συγκεκριμένα δεδομένα από μια ιστοσελίδα και στη συνέχεια ενσωματώνουν αυτά τα δεδομένα σε μια εργασία, για παράδειγμα εξαγωγή προγράμματος τάξης και μετά προσθήκη του στην εφαρμογή «Ημερολόγιο» ή εξαγωγή των δεδομένων μελών μιας ομάδας κοινωνικής δικτύωσης και μετά εισαγωγή αυτών των δεδομένων σε ένα υπολογιστικό φύλλο.
Μπορείτε επίσης να δημιουργήσετε συντομεύσεις που σας επιτρέπουν να τροποποιήσετε μια ιστοσελίδα, π.χ. αλλαγή της γραμματοσειράς του κειμένου μιας ιστοσελίδας ή τροποποίηση της ταχύτητας αναπαραγωγής ενός βίντεο.
Για πληροφορίες σχετικά με τη χρήση συντομεύσεων που εκτελούν JavaScript σε ιστοσελίδα, δείτε Χρήση της ενέργειας «Εκτέλεση JavaScript σε ιστοσελίδα» στις Συντομεύσεις.
Πληροφορίες για την ανάκτηση δεδομένων ιστοσελίδων
Η ενέργεια «Εκτέλεση 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, δείτε Εκτέλεση συντόμευσης σε άλλη εφαρμογή.
Έξοδος ενέργειας «Εκτέλεση 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()
χωρίς κανένα όρισμα στη συνάρτηση (διότι το ακαθόριστο
είναι έγκυρη έξοδος). Αυτό είναι ταυτόσημο με τη κλήση completion(undefined)
.
Για περισσότερες πληροφορίες σχετικά με το JSON, δείτε την ενότητα Εισαγωγή στη χρήση JSON στις Συντομεύσεις.
Για περισσότερες πληροφορίες ως προς τους κόμβους, επισκεφθείτε στη διεύθυνση 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 σε ιστοσελίδα». Το iOS 13 και το iPadOS υποστηρίζουν τη σύνταξη JavaScript ECMA 6, συμπεριλαμβανομένων των βρόχων for of
και let
.
Στην εφαρμογή «Συντομεύσεις», η ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα» σάς βοηθά να εντοπίζετε σφάλματα πραγματοποιώντας έναν βασικό έλεγχο σύνταξης προτού εκτελέσετε τη συντόμευση από την επέκταση Safari.
Καθώς εισαγάγετε το σκριπτ σας στο πεδίο κειμένου, η επισήμανση της σύνταξης σάς βοηθά να διασφαλίσετε ότι η JavaScript είναι έγκυρη. Για παράδειγμα, αν ξεχάσετε να συμπεριλάβετε εισαγωγικά στο τέλος μιας συμβολοσειράς, επισημαίνεται όλο το κείμενο μετά τη συγκεκριμένη συμβολοσειρά.
Αν η σύνταξη του σκριπτ σας είναι έγκυρη αλλά περιέχει σφάλμα χρόνου εκτέλεσης, η ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα» εντοπίζει και εμφανίζει τις εξαιρέσεις. Για παράδειγμα, αν το σκριπτ σας αναφέρει μεταβλητή ή συνάρτηση που δεν υπάρχει (όπως shortcuts.completion()
), εμφανίζεται ένα σφάλμα κατά τον χρόνο εκτέλεσης.
Απόρρητο και ασφάλεια
Όταν επιτρέπετε σε μια συντόμευση να εκτελεί Javascript σε ιστοσελίδα, η συντόμευση μπορεί να προσπελάζει όλες τις πληροφορίες στη συγκεκριμένη ιστοσελίδα, συμπεριλαμβανομένων δυνητικά ευαίσθητων δεδομένων. Η εφαρμογή «Συντομεύσεις» λαμβάνει μερικά μέτρα για τη διασφάλιση της εκτέλεσης των συντομεύσεων JavaScript σας με ασφάλεια και απόρρητο.
Κατά την εκτέλεση συντόμευσης που περιέχει την ενέργεια «Εκτέλεση JavaScript σε ιστοσελίδα», εμφανίζεται ένα μήνυμα που σας ενημερώνει ότι η συντόμευση πρόκειται να διαδράσει με την ιστοσελίδα. Αυτό σημαίνει ότι η συντόμευση μπορεί να προσπελάσει δυνητικά ευαίσθητα δεδομένα από την ιστοσελίδα, όπως συνθηματικά, αριθμούς τηλεφώνου ή στοιχεία πιστωτικών καρτών.
Μόλις αγγίξετε «Να επιτρέπεται», η συντόμευση εκτελείται στη συγκεκριμένη ιστοσελίδα. Αν εκτελέσετε ξανά την ίδια συντόμευση στην ίδια ιστοσελίδα, οι Συντομεύσεις δεν εμφανίζουν ξανά το μήνυμα. Αυτό το δικαίωμα παραμένει σε βάση ανά συντόμευση, ανά ιστοσελίδα.
Όταν επιτρέψετε σε μια συντόμευση να προσπελάσει μια ιστοσελίδα, οι Συντομεύσεις κάνουν ένα βήμα παραπέρα για επιπλέον προστασία από δυνητικά κακόβουλα σκριπτ μέσω περιοδικής λήψης ενημερωμένων ορισμών κακόβουλου λογισμικού. Πριν από τη διάδραση με μια ιστοσελίδα, οι Συντομεύσεις αναλύουν τη JavaScript, και μετά συμβουλεύονται τους ορισμούς κακόβουλου λογισμικού. Βάσει αυτής της ανάλυσης, οι Συντομεύσεις λαμβάνουν οδηγία για να επιτρέψουν το σκριπτ, να αρνηθούν το σκριπτ ή να εμφανίσουν ένα επιπλέον μήνυμα προτού επιτραπεί η εκτέλεση της συντόμευσης.
Αυτή η ανάλυση εκτελείται στη συσκευή σας –τα περιεχόμενα της JavaScript σας (στο πεδίο κειμένου της ενέργειας «Εκτέλεση JavaScript σε ιστοσελίδα»)– δεν στέλνονται σε εξωτερικό διακομιστή για ανάλυση.
Αν αποτραπεί η εκτέλεση της συντόμευσης, εμφανίζεται ένα επεξηγηματικό μήνυμα.
Σημαντικό: Δεν πρέπει να εκτελείτε ποτέ μια συντόμευση που περιέχει JavaScript που δεν εμπιστεύεστε.