Βελτίωση της λειτουργικότητας του προγράμματος προβολής PDF σε έναν ιστότοπο βιβλιοθήκης Wix
Η εμφάνιση ενός τεράστιου αρχείου αρχείων PDF με οργανωμένο και φιλικό προς τον χρήστη τρόπο είναι ζωτικής σημασίας για τη βελτίωση της εμπειρίας χρήστη στον ιστότοπο μιας δημόσιας βιβλιοθήκης. Ο στόχος είναι να προσφέρει στους επισκέπτες απρόσκοπτη πρόσβαση σε ιστορικά αρχεία όπως παλιές εφημερίδες, τα οποία αποθηκεύονται ως PDF. Σε αυτό το έργο, η χρήση των Wix, Velo και ενός στοιχείου ενσωμάτωσης HTML δημιουργεί τα θεμέλια για ένα ισχυρό σύστημα.
Η πλατφόρμα του Wix υποστηρίζει ενσωματωμένα στοιχεία μέσω iframes, επιτρέποντας στους χρήστες να προσθέτουν διαδραστικά στοιχεία όπως προγράμματα προβολής PDF. Αυτό το πρόγραμμα προβολής PDF είναι ενσωματωμένο χρησιμοποιώντας ένα iframe και επί του παρόντος, μια στατική διεύθυνση URL ορίζει ποιο έγγραφο θα εμφανίζεται. Ωστόσο, η ανάγκη δυναμικής αλλαγής του αρχείου PDF με βάση τα δεδομένα χρήστη είναι απαραίτητη για μια ομαλή εμπειρία.
Η πρόκληση είναι να επιτραπεί στους χρήστες να επιλέξουν ένα έτος και ένα μήνα από δύο αναπτυσσόμενα μενού, τα οποία στη συνέχεια θα ενεργοποιήσουν μια αλλαγή στο έγγραφο PDF που εμφανίζεται. Αυτό περιλαμβάνει την ενσωμάτωση μηνυμάτων JavaScript για την επικοινωνία με το iframe, επιτρέποντας στη διεύθυνση URL του εγγράφου να αλλάζει σύμφωνα με τις αναπτυσσόμενες επιλογές.
Αυτή η προσέγγιση όχι μόνο μειώνει την ανάγκη για πολλές στατικές σελίδες Wix αλλά και απλοποιεί την πρόσβαση στο αρχείο PDF της βιβλιοθήκης. Παρακάτω, διερευνούμε τα βήματα και τις λύσεις που απαιτούνται για την εφαρμογή αυτού χρησιμοποιώντας το πλαίσιο Velo και τη JavaScript.
Εντολή | Παράδειγμα χρήσης |
---|---|
PSPDFKit.load() | Αυτή η μέθοδος προετοιμάζει το πρόγραμμα προβολής PDF PSPDFKit μέσα σε ένα συγκεκριμένο κοντέινερ. Φορτώνει ένα αρχείο PDF από την παρεχόμενη διεύθυνση URL, καθιστώντας το ορατό μέσα στο στοιχείο ενσωμάτωσης. Είναι ειδικά για τη βιβλιοθήκη JavaScript του PSPDFKit, η οποία είναι προσαρμοσμένη για την ενσωμάτωση και την προβολή εγγράφων PDF. |
postMessage() | Χρησιμοποιείται για την επικοινωνία μεταξύ του γονικού παραθύρου και ενός ενσωματωμένου iframe. Σε αυτό το πλαίσιο, στέλνει ένα μήνυμα από την κύρια σελίδα στο iframe, επιτρέποντας στο iframe να ενημερώσει το περιεχόμενό του (το URL PDF) με βάση τις αναπτυσσόμενες επιλογές. |
window.addEventListener("message") | Αυτό το πρόγραμμα ακρόασης συμβάντων προστίθεται μέσα στο iframe για να ακούσει μηνύματα που αποστέλλονται μέσω του postMessage(). Επεξεργάζεται το μήνυμα για να φορτώσει δυναμικά ένα νέο έγγραφο PDF στο iframe με βάση τα δεδομένα που λαμβάνονται. |
event.data | Στο πρόγραμμα χειρισμού συμβάντων μηνυμάτων, το event.data περιέχει τα δεδομένα που αποστέλλονται από το γονικό παράθυρο. Σε αυτήν την περίπτωση, περιλαμβάνει τη διεύθυνση URL του επιλεγμένου αρχείου PDF που θα φορτωθεί στο πρόγραμμα προβολής PSPDFKit. |
document.getElementById() | Αυτή η μέθοδος χειρισμού DOM ανακτά ένα στοιχείο HTML με το αναγνωριστικό του. Χρησιμοποιείται για τη λήψη εισόδου χρήστη από τα αναπτυσσόμενα στοιχεία, επιτρέποντας στο σενάριο να προσδιορίσει το επιλεγμένο έτος και μήνα για την ενημέρωση URL του PDF. |
DOMContentLoaded | Ένα συμβάν που διασφαλίζει ότι η JavaScript εκτελείται μόνο μετά την πλήρη φόρτωση του DOM. Αυτό αποτρέπει σφάλματα κατά την προσπάθεια πρόσβασης σε στοιχεία DOM πριν αυτά υπάρξουν. |
addEventListener("change") | Αυτό το πρόγραμμα ακρόασης συμβάντων παρακολουθεί τα αναπτυσσόμενα στοιχεία για τυχόν αλλαγές. Όταν ένας χρήστης επιλέγει διαφορετικό έτος ή μήνα, ενεργοποιείται η λειτουργία για ενημέρωση της διεύθυνσης URL PDF και φόρτωση του αντίστοιχου εγγράφου. |
template literals | Τα κυριολεκτικά πρότυπα (που περικλείονται από backticks) επιτρέπουν την ενσωμάτωση μεταβλητών σε συμβολοσειρές, καθιστώντας εύκολη τη δυναμική δημιουργία της διεύθυνσης URL για το επιλεγμένο PDF. Για παράδειγμα: `https://domain.tld/${year}_${month}_etc.pdf`. |
container: "#pspdfkit" | Στην προετοιμασία του PSPDFKit, το κοντέινερ καθορίζει το στοιχείο HTML (κατά αναγνωριστικό) όπου θα αποδοθεί το πρόγραμμα προβολής PDF. Αυτό είναι απαραίτητο για τον καθορισμό του σημείου που θα εμφανίζεται το PDF στη σελίδα. |
Δυναμική φόρτωση PDF με αναπτυσσόμενες επιλογές στο Wix
Σε αυτήν τη λύση, χρησιμοποιούμε ένα ζεύγος αναπτυσσόμενων στοιχείων σε μια σελίδα Wix για να τροποποιήσουμε δυναμικά τη διεύθυνση URL ενός αρχείου PDF που εμφανίζεται σε ένα ενσωματωμένο iFrame. Αυτό το σύστημα είναι ιδιαίτερα χρήσιμο για δημόσιες βιβλιοθήκες που επιθυμούν να παρέχουν εύκολη πρόσβαση σε αρχεία PDF αρχειοθετημένων εφημερίδων. Η βασική λειτουργικότητα τροφοδοτείται από Μηνύματα JavaScript, το οποίο στέλνει τις επιλογές του χρήστη από τα αναπτυσσόμενα μενού στο ενσωματωμένο πρόγραμμα προβολής PDF. Το πρόγραμμα προβολής PSPDFKit χρησιμοποιείται για την απόδοση των αρχείων PDF μέσα στο iFrame και χειριζόμαστε το πρόγραμμα προβολής αλλάζοντας τη διεύθυνση URL με βάση την επιλογή του έτους και του μήνα από τον χρήστη. Αυτό παρέχει έναν απλοποιημένο τρόπο για την εμφάνιση μεγάλων αρχείων χωρίς τη δημιουργία πολλαπλών στατικών σελίδων Wix.
Το πρώτο αναπτυσσόμενο μενού επιλέγει το έτος και το δεύτερο αναπτυσσόμενο μενού επιλέγει τον μήνα. Όταν ο χρήστης επιλέξει και τα δύο, το σύστημα κατασκευάζει την κατάλληλη διεύθυνση URL για το αντίστοιχο αρχείο PDF. Ο PSPDFKit.load() Η μέθοδος είναι κεντρική σε αυτό, καθώς φορτώνει το νέο PDF στο iFrame με βάση την ενημερωμένη διεύθυνση URL. Αυτή η μέθοδος είναι μέρος της βιβλιοθήκης PSPDFKit, η οποία είναι ενσωματωμένη στη σελίδα μέσω μιας εξωτερικής δέσμης ενεργειών. Ο postMessage() Το API είναι επίσης κρίσιμο στην εναλλακτική λύση, η οποία επιτρέπει την ανταλλαγή μηνυμάτων μεταξύ της γονικής σελίδας και του iframe. Με την αποστολή ενός μηνύματος που περιέχει τη νέα διεύθυνση URL PDF στο iframe, το πρόγραμμα προβολής PDF ενημερώνεται δυναμικά.
Για να διασφαλίσουμε ότι το σενάριο εκτελείται μόνο όταν το DOM έχει φορτωθεί πλήρως, χρησιμοποιούμε το DOMContentLoaded συμβάν. Αυτό διασφαλίζει ότι τα αναπτυσσόμενα στοιχεία και το κοντέινερ PSPDFKit είναι προσβάσιμα στο σενάριο. Προσθέτουμε επίσης προγράμματα ακρόασης συμβάντων σε κάθε αναπτυσσόμενο μενού. Όταν ο χρήστης επιλέξει ένα έτος ή ένα μήνα, το αντίστοιχο πρόγραμμα ακρόασης συμβάντος καταγράφει την επιλογή και καλεί μια συνάρτηση για να φορτώσει ξανά το πρόγραμμα προβολής PDF με τη σωστή διεύθυνση URL. Αυτό αντιμετωπίζεται μέσω μιας απλής συνάρτησης που χρησιμοποιεί κυριολεκτικά πρότυπα για τη δημιουργία της διεύθυνσης URL από τις επιλεγμένες τιμές στα αναπτυσσόμενα μενού. Αυτή η μέθοδος δεν είναι μόνο εύκολη στην εφαρμογή αλλά και εξαιρετικά αρθρωτή, επιτρέποντας εύκολες ενημερώσεις καθώς προστίθενται νέα αρχεία.
Στη δεύτερη προσέγγιση, χρησιμοποιούμε postMessage() για επικοινωνία μεταξύ της γονικής σελίδας και του iFrame. Η γονική σελίδα ακούει τις αναπτυσσόμενες αλλαγές και στέλνει ένα μήνυμα που περιέχει τη νέα διεύθυνση URL PDF στο iFrame, το οποίο λαμβάνει το μήνυμα χρησιμοποιώντας μια συσκευή ακρόασης συμβάντων. Αυτή η μέθοδος είναι χρήσιμη όταν αντιμετωπίζετε πιο απομονωμένα περιβάλλοντα όπου το iframe δεν μπορεί να αλληλεπιδράσει απευθείας με το DOM της γονικής σελίδας. Και οι δύο μέθοδοι παρέχουν αποτελεσματικούς τρόπους δυναμικής ενημέρωσης του περιεχομένου ενός ενσωματωμένου προγράμματος προβολής PDF, μειώνοντας την ανάγκη για πολλές στατικές σελίδες και προσφέροντας μια φιλική προς το χρήστη εμπειρία περιήγησης.
Εφαρμογή της εναλλαγής URL με βάση το αναπτυσσόμενο μενού για το πρόγραμμα προβολής PDF στο Wix
Σενάριο Frontend χρησιμοποιώντας JavaScript και πλαίσιο Velo
// HTML structure for the dropdowns and embed element
<div>
<label for="yearSelect">Select Year:</label>
<select id="yearSelect">
<option value="">--Year--</option>
<option value="1962">1962</option>
<option value="1963">1963</option>
<!-- Add other years dynamically or manually -->
</select>
<label for="monthSelect">Select Month:</label>
<select id="monthSelect">
<option value="">--Month--</option>
<option value="January">January</option>
<option value="February">February</option>
<!-- Add other months dynamically or manually -->
</select>
</div>
// Embedded PDF viewer in iframe
<div id="pspdfkit" style="width: 100%; height: 100%; max-width: 1920px;"></div>
<script src="https://cdn.cloud.pspdfkit.com/pspdfkit-web@2024.5.2/pspdfkit.js"></script>
// JavaScript to update URL based on dropdown selection
<script>
document.addEventListener("DOMContentLoaded", () => {
const yearSelect = document.getElementById("yearSelect");
const monthSelect = document.getElementById("monthSelect");
function loadPDF(year, month) {
if (year && month) {
const url = `https://domain.tld/${year}_${month}_etc.pdf`;
PSPDFKit.load({
container: "#pspdfkit",
document: url,
}).catch((error) => {
console.error("Failed to load PDF:", error);
});
}
}
yearSelect.addEventListener("change", () => {
loadPDF(yearSelect.value, monthSelect.value);
});
monthSelect.addEventListener("change", () => {
loadPDF(yearSelect.value, monthSelect.value);
});
});
</script>
Εναλλακτική προσέγγιση: Χρήση PostMessage API για επικοινωνία iFrame
Σενάριο διεπαφής που χρησιμοποιεί το postMessage API για καλύτερη απομόνωση μεταξύ του iframe και του γονικού εγγράφου
// HTML structure remains the same for dropdowns
// Here, we use iframe with a postMessage-based communication system
<iframe id="pdfViewer" src="about:blank" style="width: 100%; height: 100%;"></iframe>
// JavaScript for sending messages to iframe
<script>
document.addEventListener("DOMContentLoaded", () => {
const yearSelect = document.getElementById("yearSelect");
const monthSelect = document.getElementById("monthSelect");
const iframe = document.getElementById("pdfViewer");
function updatePDFViewer(year, month) {
if (year && month) {
const url = `https://domain.tld/${year}_${month}_etc.pdf`;
iframe.contentWindow.postMessage({
type: "updatePDF",
url: url
}, "*");
}
}
yearSelect.addEventListener("change", () => {
updatePDFViewer(yearSelect.value, monthSelect.value);
});
monthSelect.addEventListener("change", () => {
updatePDFViewer(yearSelect.value, monthSelect.value);
});
});
</script>
// Inside iframe, use this script to receive the message
<script>
window.addEventListener("message", (event) => {
if (event.data.type === "updatePDF" && event.data.url) {
PSPDFKit.load({
container: "#pspdfkit",
document: event.data.url,
});
}
});
</script>
Βελτίωση της προσβασιμότητας του αρχείου PDF με Wix και JavaScript Messaging
Μια άλλη σημαντική παράμετρος κατά τη χρήση αναπτυσσόμενων στοιχείων για τη δυναμική τροποποίηση μιας ενσωματωμένης διεύθυνσης URL PDF στο Wix είναι η διασφάλιση ότι η αλληλεπίδραση μεταξύ των iFrame και η κύρια σελίδα είναι αποτελεσματική. Ενώ η ανταλλαγή μηνυμάτων JavaScript μας επιτρέπει να στέλνουμε δεδομένα μεταξύ αυτών των δύο στοιχείων, η απόδοση και η εμπειρία χρήστη μπορούν να βελτιωθούν βελτιστοποιώντας τον τρόπο με τον οποίο η επιλογή ενεργοποιεί ενημερώσεις. Αυτό μπορεί να γίνει με την αφαίρεση της εισόδου, πράγμα που σημαίνει ότι το σύστημα ενημερώνει το πρόγραμμα προβολής PDF μόνο αφού ο χρήστης ολοκληρώσει την επιλογή του και όχι για κάθε αλλαγή.
Μια άλλη πτυχή που δεν έχει καλυφθεί ακόμα είναι κοινή χρήση πόρων μεταξύ προέλευσης (CORS). Δεδομένου ότι τα PDF φιλοξενούνται σε έναν εξωτερικό διακομιστή (όπως το Digital Ocean), είναι σημαντικό να διασφαλίσετε ότι ο διακομιστής έχει ρυθμιστεί ώστε να επιτρέπει την πρόσβαση από τον τομέα Wix. Εάν οι ρυθμίσεις CORS του διακομιστή δεν έχουν διαμορφωθεί σωστά, το πρόγραμμα προβολής PDF ενδέχεται να μην μπορεί να φορτώσει το έγγραφο, με αποτέλεσμα να προκύψουν σφάλματα. Οι κατάλληλες κεφαλίδες CORS στον διακομιστή που φιλοξενεί τα αρχεία PDF είναι απαραίτητες για την απρόσκοπτη ενοποίηση μεταξύ των δύο πλατφορμών.
Επιπλέον, μπορείτε να βελτιώσετε το σύστημα προφορτώνοντας αρχεία PDF στα οποία έχετε συχνά πρόσβαση για να μειώσετε τους χρόνους φόρτωσης. Οι στρατηγικές προφόρτωσης είναι χρήσιμες όταν ο χρήστης είναι πιθανό να κάνει εναλλαγή μεταξύ πολλών μηνών ή ετών. Με την αποθήκευση αυτών των αρχείων στην κρυφή μνήμη του προγράμματος περιήγησης, οι επόμενες φορτώσεις εγγράφων θα είναι ταχύτερες, παρέχοντας μια πιο ομαλή εμπειρία χρήστη. Αυτό μπορεί να γίνει χρησιμοποιώντας υπαλλήλους υπηρεσιών ή άλλους μηχανισμούς προσωρινής αποθήκευσης, οι οποίοι μπορούν να ρυθμιστούν για προφόρτωση αρχείων PDF καθώς ο χρήστης περιηγείται στις διαθέσιμες επιλογές.
Συχνές ερωτήσεις σχετικά με τις δυναμικές ενσωματώσεις PDF στο Wix
- Πώς μπορώ να προσθέσω τους αναπτυσσόμενους επιλογείς στο Wix;
- Μπορείτε να προσθέσετε αναπτυσσόμενα στοιχεία χρησιμοποιώντας το πρόγραμμα επεξεργασίας Wix και να χρησιμοποιήσετε JavaScript για να τα ελέγξετε εκχωρώντας μοναδικά αναγνωριστικά. Τα αναπτυσσόμενα στοιχεία θα ενεργοποιήσουν αλλαγές στη διεύθυνση URL του PDF document.getElementById().
- Τι κάνει το PSPDFKit.load() εντολή κάνω;
- Ο PSPDFKit.load() Η μέθοδος είναι υπεύθυνη για την απόδοση του προγράμματος προβολής PDF και τη φόρτωση ενός συγκεκριμένου αρχείου PDF σε αυτό. Αυτή η μέθοδος είναι μέρος της βιβλιοθήκης PSPDFKit που χρησιμοποιείται για τη δυναμική εμφάνιση αρχείων PDF.
- Μπορώ να χρησιμοποιήσω postMessage() για επικοινωνία μεταξύ προέλευσης;
- Ναι, το postMessage() Το API έχει σχεδιαστεί ειδικά για την επικοινωνία μεταξύ διαφορετικών προελεύσεων, όπως μεταξύ μιας γονικής σελίδας και ενός iFrame, κάτι που είναι ζωτικής σημασίας για αυτήν την υλοποίηση.
- Πώς μπορώ να χειριστώ τα σφάλματα κατά τη φόρτωση ενός PDF;
- Μπορείτε να χειριστείτε σφάλματα προσθέτοντας a .catch() μπλοκ προς το PSPDFKit.load() λειτουργία για να εντοπίζει τυχόν σφάλματα που προκύπτουν κατά τη διαδικασία φόρτωσης και να εμφανίζει ένα κατάλληλο μήνυμα σφάλματος.
- Πρέπει να διαμορφώσω τον διακομιστή μου για CORS;
- Ναι, εάν τα PDF σας φιλοξενούνται σε διαφορετικό τομέα, θα πρέπει να βεβαιωθείτε ότι ο διακομιστής έχει ρυθμιστεί σωστά CORS κεφαλίδες για να επιτρέπεται στον ιστότοπο Wix να έχει πρόσβαση στα έγγραφα.
Τελικές σκέψεις σχετικά με τη δυναμική οθόνη PDF
Αυτή η λύση απλοποιεί τη διαδικασία εμφάνισης μεγάλων αρχείων αρχείων PDF σε μία μόνο σελίδα. Χρησιμοποιώντας δύο αναπτυσσόμενα στοιχεία για την επιλογή έτους και μήνα, μπορούμε να ενημερώσουμε δυναμικά το πρόγραμμα προβολής PDF χωρίς να δημιουργήσουμε πολλές σελίδες Wix.
Συνδυάζοντας την ευελιξία του πλαισίου Velo με την ανταλλαγή μηνυμάτων JavaScript μεταξύ αναπτυσσόμενων μενού και του iFrame, αυτή η μέθοδος παρέχει έναν αποτελεσματικό τρόπο οργάνωσης και παρουσίασης ιστορικών δεδομένων. Είναι επεκτάσιμο και φιλικό προς το χρήστη για ιστοτόπους που έχουν πρόσβαση στο κοινό, όπως τα αρχεία βιβλιοθηκών.
Πηγές και αναφορές για δυναμική φόρτωση PDF με Wix και JavaScript
- Παρέχει λεπτομερή τεκμηρίωση σχετικά με την εργασία με το στοιχείο HTML iFrame και την ανταλλαγή μηνυμάτων JavaScript στο Wix χρησιμοποιώντας το πλαίσιο Velo. Επίσκεψη Έγγραφα προγραμματιστή Wix για περισσότερες πληροφορίες.
- Η επίσημη τεκμηρίωση του PSPDFKit, που περιγράφει λεπτομερώς τον τρόπο ενσωμάτωσης και φόρτωσης αρχείων PDF σε ένα iFrame χρησιμοποιώντας τη βιβλιοθήκη JavaScript. Πρόσβαση σε αυτό εδώ: Τεκμηρίωση PSPDFKit .
- Ένας οδηγός για την εφαρμογή κοινής χρήσης πόρων μεταξύ προέλευσης (CORS) για τη διασφάλιση της σωστής φόρτωσης PDF από εξωτερικούς διακομιστές όπως ο Digital Ocean. Μπορείτε να διαβάσετε περισσότερα στο Έγγραφα Ιστού MDN στο CORS .