Unten ist mein fcm setBackgroundMessageHandler
Funktion:Get-Dokument in setBackgroundMessageHandler Funktion von fcm
messaging.setBackgroundMessageHandler(function(payload) {
console.log('[firebase-messaging-sw.js] Received background message ', payload);
// Customize notification here
const notificationTitle = 'Background Message Title';
const notificationOptions = {
body: 'Background Message body.',
icon: '/firebase-logo.png'
};
var event = new CustomEvent("name-of-event", payload);
// Dispatch/Trigger/Fire the event
document.dispatchEvent(event);
return self.registration.showNotification(notificationTitle,
notificationOptions);
});
Ich kann keine document
in obigem Verfahren zuzugreifen. Ich habe versucht, Dokument in globaler Variable zu speichern und auf es innerhalb der oben genannten Methode zuzugreifen, aber es funktioniert nicht.
var document = document;
.
.
.
document.dispatchEvent(event); // gives error: dispatchEvent of undefined
Soweit ich Ihr Hintergrund-Handler läuft in einem Service kennen:
In
service worker js
Datei VerwendungBroadcastChannel
‚spostMessage
Funktion Nachricht zur Hauptseite senden Worker, der keinen Zugriff auf das DOM hat. Sie verwenden 'postMessage()', um Nachrichten zwischen dem Service-Worker und der Hauptseite zu senden. Siehe https://stackoverflow.com/questions/37704641/access-dom-by-web-worker –@FrankvanPuffelen Dank –
@FrankvanPuffelen gibt es eine Möglichkeit, die Benachrichtigung in 'setBackgroundMessageHandler' zu verhindern –