Gibt es eine Möglichkeit, SharedWorker zu erstellen, der die Quelle von einer anderen Site lädt?
-
27-10-2019 - |
Frage
Angenommen, meine HTML-Datei stammt von http://foo.com/index.html http://bar.com/bar.js enthält ein <script>
-Tag.In bar.js möchte ich einen SharedWorker starten, dessen URL http://bar.com/worker.js
Lösung 2
Dies ist eine Lösung, die ich gefunden habe:
- Schreiben Sie das Skript in eine Funktion (kann eine innere Funktion sein)
- Ruft den Text mit function.toString () ab (Entfernen der Funktionsdeklaration und Schließen der Klammer)
- Hänge den Text an einen BlobBuilder an und erhalte den Blob
- Verwenden Sie window.URL.createObjectURL, um den Blob in eine URL zu konvertieren
- Verwenden Sie diese URL für den Worker
Andere Tipps
Die heutzutage bevorzugte Methode für diesen domänenübergreifenden Zugriff ist die Verwendung der W3 CORS-Spezifikation.
Herkunftsübergreifende Ressourcenfreigabe
Dies ist jedoch möglicherweise nicht für Sie geeignet, wenn Sie die Website unter bar.com nicht kontrollieren.Wenn Sie dies tun, ist CORS definitiv eine gute Option, aber Sie müssen möglicherweise auf JSONP zurückgreifen, wenn bar.com von einer anderen Partei betrieben wird, da CORS davon abhängt, dass die Site bestimmte Header zurücksendet, die Ihren Browser zum Herunterladen der von Ihnen angeforderten Ressource autorisieren.