Ich möchte einen HTML5-Web-Worker verwenden, um in regelmäßigen Abständen Länge und Breite an einen erholsamen Server zu melden - auch wenn der Tab nicht im Fokus ist. Mein Problem ist, dass die Art und Weise, auf die ich normalerweise auf die HTML5-Funktion geolocation zugreifen würde, im Web-Worker nicht verfügbar ist.Verwenden von Geolocation in einem HTML5-Web-Worker
Ich habe versucht, das Geolocation-Objekt aus meiner Hauptdatei an den Web-Worker zu senden. Sie jedoch, dass nicht funktioniert hat und ich bekam die folgende Fehlermeldung:
Uncaught DataCloneError: Failed to execute 'postMessage' on 'Worker': An object could not be cloned.
Weiter habe ich versucht, eine JavaScript-Bibliothek importieren, das Geolocator genannt Geolocation-Services anbietet. Aber dann habe ich festgestellt, dass ich keinen Zugriff auf die Bibliothek im Worker habe (ich denke, weil der Worker keinen Zugriff auf das DOM hat).
Also, in einem Versuch, dies zu bekämpfen, fügte ich die Quelle dieser JavaScript-Bibliothek direkt in die Worker-Datei, aber das hat nicht funktioniert, weil ich keinen Zugriff auf window
haben, die in der Quelle von Geolocator wiederholt verwendet wird .
Ist was ich versuche zu tun? Gibt es Alternativen, die ich nutzen kann?
Okay, das ist enttäuschend. Kennen Sie Web-Workers, die auch dann funktionieren, wenn ein Tab nicht im Fokus ist? – Haych
@Haych Ich bin nicht, aber vielleicht könnte man einen Timer im Web-Arbeiter laufen lassen und dann den Haupt-Thread warnen, den REST-Aufruf auszuführen? Ich bin mir nicht sicher, ob das funktionieren würde, ich habe es nicht versucht. –
Es gibt eine laufende Diskussion über [w3c repo] (https://github.com/w3c/ServiceWorker/issues/745), die im September 2015 über die mögliche Implementierung von Geolocation in ServiceWorker begann –