απαιτήσεις: Το προηγούμενο άρθρο έγραψε σχετικά με τον τρόπο υλοποίησης της διεπαφής ιστού και της εφαρμογής WinForm για επικοινωνία μεταξύ τους για αποστολή μηνυμάτων, αλλά μόνο το μήνυμα στάλθηκε με επιτυχία και δεν ήταν δυνατή η λήψη των πληροφοριών απάντησης. Τι γίνεται αν ο πελάτης C# καλέσει μια μέθοδο συνάρτησης του ιστού για να λάβει το αποτέλεσμα επιστροφής; Και πώς καλεί ο ιστός τον κωδικό C# και λαμβάνει την τιμή επιστροφής;
Αναθεώρηση:
Αρχικά, ας δούμε τις αποδόσεις της υλοποίησης, ο ιστότοπος που ονομάζεται εφαρμογή WinFormΛήψη δεδομένων προχείρου, εφαρμογή WinFormΚαλέστε τη μέθοδο abc του ιστού για να λάβετε την τιμή επιστροφήςΩς εξής:
Η C# καλεί τη μέθοδο συνάρτησης Web
Αυτό το σενάριο δείχνει πώς μπορείτε να εκτελέσετε JavaScript στον Ιστό. Σε αυτήν τη μέθοδο, η κεντρική εφαρμογή καθορίζει τον κώδικα JavaScript που θα εκτελεστεί και μεταβιβάζει τον κώδικα στον ιστό με το ExecuteScriptAsync. Η συνάρτηση ExecuteScriptAsync επιστρέφει το αποτέλεσμα JavaScript στον καλούντα ExecuteScript.
Ο κώδικας σελίδας Angular index.html έχει ως εξής:
Το frontend ορίζει κυρίως μια συνάρτηση abc.
Το Winform καλεί τη συνάρτηση abc του ιστού με τον ακόλουθο κώδικα:
Μια ιστοσελίδα καλεί μια μέθοδο συνάρτησης C#
Μεταβίβαση εγγενών αντικειμένων στον Ιστό. Στη συνέχεια καλείται η μέθοδος κλήσης του αντικειμένου από τον Ιστό.
Για να χρησιμοποιήσετε ένα μήνυμα που αντιπροσωπεύει μια κλήση μεθόδου, χρησιμοποιήστε το API AddHostObjectToScript. Σε υψηλό επίπεδο, αυτό το API επιτρέπει σε εγγενή αντικείμενα (κεντρικός υπολογιστής) να εκτίθενται στον ιστό και να λειτουργούν ως διακομιστής μεσολάβησης. Χρησιμοποιήστε window.chrome.webview.hostObjects. {name}>a0> πρόσβαση σε αυτά τα αντικείμενα. Τεκμηρίωση αναφοράς:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Δημιουργήστε ένα νέο κουμπί στην ιστοσελίδα, κάντε κλικ στο κουμπί για να καλέσετε τον κωδικό C# για να λάβετε τα δεδομένα του τρέχοντος προχείρου του συστήματος.
Ο κωδικός Angular app.component.html έχει ως εξής:
app.component.ts κωδικός έχει ως εξής:
Ο κώδικας JS front-end έχει σύγχρονες κλήσεις και ασύγχρονες κλήσεις.
c# ορίστε ένα αντικείμενο κεντρικού υπολογιστή WebView2HostObject με τον ακόλουθο κώδικα:
Σημείωση: Οι προσαρμοσμένες WebView2HostObject πρέπει να φέρουν ετικέτα[ClassInterface(ClassInterfaceType.AutoDual)]、[ComVisible(true)]διαφορετικά ο JS δεν θα μπορούσε να έχει πρόσβαση στην κλάση.
Στη συνέχεια, προσθέστε την πρόσφατα καθορισμένη παρουσία μέσω του AddHostObjectToScript(String,Object) με τον ακόλουθο κώδικα:
Τέλος, κάντε κλικ στο κουμπί στο μπροστινό μέρος για να λάβετε τα δεδομένα του προχείρου, το αποτέλεσμα είναι το εξής:
(Τέλος)
|