Die von mir entwickelte Chrome Extension injiziert Polymer und andere Webkomponenten über HTML - Imports in die Host - Seite im Gegensatz zu der typischen Methode, Inhalts - Skripte zu verwenden, die automatisch in einem laufen isolated world.Javascript in einer "isolierten Welt" ausführen (chrome)
Der Grund hinter diesem mit zwei Dingen zu tun hat:
- Chrome-Erweiterungen können nicht benutzerdefinierte Elemente aus content scripts
- Das Chrome-Erweiterung Manifest nicht registriert HTML Importen läuft in einer isolierten Umgebung unterstützen, nur Javascript
Aufgrund dieser Einschränkungen, musste ich lade meine Komponenten in der Host-Seite <head>
als described here greifen.
Das offensichtliche Problem, mit dem ich konfrontiert bin, ist mit meinem Javascript Konflikt mit der Javascript-Seite der Host-Seite [auf bestimmten Websites], da die Methode, die ich verwende, um meine Abhängigkeiten zu injizieren läuft nicht in einer "isolierten Welt".
Bisher habe ich die meisten dieser Probleme gelöst, indem ich eine Schluckaufgabe Polymer & meine Komponenten zu vermeiden, um Konflikte zu vermeiden, aber leider ist es nicht perfekt und ein robuster Ansatz ist erforderlich.
Endlich zu meiner Frage: Ist es möglich, eine "isolierte Welt" für mein Javascript zu erstellen? Vielleicht ein anderes Dokumentobjekt? Wenn nicht, gibt es irgendwelche Strategien, die ich anwenden kann, um sicherzustellen, dass mein Code isoliert läuft?
Update:
Ein paar von euch mit IIFE vorgeschlagen, das ist, was ich bisher im Einsatz. Ich bin auf der Suche nach einer Antwort im Sinne einer isolierten Welt, ähnlich wie Google Chrome unter Erweiterungen läuft. Dies liegt hauptsächlich daran, dass Polymer an das globale Fensterobjekt angehängt werden muss.
welche Konflikte meinst du? nur Variablen Name/Funktion Konflikte oder komplexere? – juvian
Variablen-/Funktionsnamenskonflikte. Dies gilt insbesondere, wenn die Host-Seite eine eigene Version von Polymer verwendet. –
Können Sie das Polymer nicht auf der Seite verwenden? Überprüfen Sie, ob es bereits existiert, und wenn nicht, injizieren Sie Ihre? – juvian