Wir haben eine Legacy-Anwendung, die zu der Zeit nur mit Internet Explorer funktioniert. Es funktioniert nicht mit Chrome oder einer anderen Anwendung. Der Grund dafür ist, dass es extensiv ActiveXObject verwendet. Da ActiveXObject nicht in IE-Browsern verfügbar ist, kann die Anwendung nicht gerendert werden. Ich frage mich, ob eine Chrome-Erweiterung entwickelt werden kann, die das Skript beim Laden der Seite patchen und dann wieder nur das Javascript starten kann. Ich habe viele Google-Suche versucht, um eine anständige Erklärung ohne Glück zu kommen. Hat jemand Erfahrung mit der Entwicklung von Chromverlängerungen? Kann meine Idee umgesetzt werden?Können Chrome-Erweiterungen zum Patchen von Browserkompatibilitätsproblemen verwendet werden?
Antwort
Ich glaube nicht - im Allgemeinen kann der Javascript-Code in Ihrer Erweiterung nicht direkt mit Javascript-Code auf der Seite interagieren, so dass Sie nicht direkt ändern können, so dass es ActiveX nicht verwendet, wenn das Ihr ist planen. Sie teilen sich ein DOM, aber keine Ausführungsumgebung. Werfen Sie einen Blick in die Dokumentation: https://developer.chrome.com/extensions/content_scripts#execution-environment
Inhalt Skripte in einer speziellen Umgebung ausgeführt werden genannt eine isolierte Welt. Sie haben Zugriff auf das DOM der Seite, in die sie eingefügt werden, aber nicht auf JavaScript-Variablen oder Funktionen, die von der Seite erstellt wurden. Es sieht für jedes Inhaltsskript so aus, als ob kein anderes JavaScript auf der Seite ausgeführt wird, auf der es ausgeführt wird. Dasselbe gilt umgekehrt: JavaScript, das auf der Seite ausgeführt wird, kann keine Funktionen aufrufen oder auf Variablen zugreifen, die von Inhaltsskripten definiert werden.
Chrome unterstützt ActiveX ohnehin nicht, so dass Sie auch sehr eingeschränkt sind. In Ihrem Fall ist es wahrscheinlich die bessere Option, die Legacy-Anwendung neu zu schreiben, um ActiveX nicht zu verwenden, falls dies möglich ist.
ist es wahr, das ist nicht möglich, aber die Gründe sind falsch. Eine Erweiterung kann dieselbe Ausführungsumgebung teilen, indem sie ein Skript eingibt. –
Ah, Sie haben Recht - ein Inhaltsskript funktioniert nicht, aber Sie können einer Ressource, die den Legacy-Code patcht, ein Skript-Tag hinzufügen. Das ist eigentlich ein guter Punkt, es ist ein wenig unordentlich, aber es funktioniert, ich habe es selbst gemacht, weil es für [gmail.js] (https://github.com/KartikTalwar/gmail.js/) benötigt wird ... hmm . Aber ich denke, in diesem speziellen Fall ist es sinnvoller, die Legacy-App einfach neu zu schreiben, da dies eine Option ist. –
- 1. Welche Java-Bibliotheken können zum Generieren von KML verwendet werden?
- 2. Welche Methoden können zum Sichern von Webdiensten verwendet werden?
- 3. Wie können Listenelemente zum Einbetten von Inhalten verwendet werden?
- 4. Wie können FactoryGirl-Fabriken zum Aufbau einer Entwicklungsdatenbank verwendet werden?
- 5. Ende des Automatisierungsskripts können keine Browser zum Schließen verwendet werden
- 6. Können Web-Komponenten zum Erstellen benutzerdefinierter Eingabeelemente verwendet werden?
- 7. Können Einmalkennwörter als Bezeichner verwendet werden?
- 8. Verwenden von Verfeinerungen zum Patchen eines Core-Moduls wie Kernel
- 9. Können mehrere Tasten mit lrange verwendet werden?
- 10. Tabellenviewer und Editor können nicht verwendet werden
- 11. Können Variablen in ElasticSearch-Indexvorlagen verwendet werden?
- 12. Wofür können JSON-Zeichenfolgen verwendet werden?
- 13. Welche Datenbanken können mit Java verwendet werden?
- 14. Wie können Bootstrap-Optionsfelder verwendet werden?
- 15. Können virtuelle Funktionen in Rückgabewerten verwendet werden?
- 16. Können canDropLabels in DateTimeAxis verwendet werden?
- 17. Wie können% -Zeichen in Bezeichnern verwendet werden
- 18. gevent + subprocess: Ist es möglich, Teilprozesse zu patchen, die in einigen importierten Modulen verwendet werden, zum Beispiel in sh?
- 19. ActiveAdmin-Helfer können nicht verwendet werden
- 20. Können SPA-Frameworks in MPA verwendet werden?
- 21. Wie können Kommentare in Lenkervorlagen verwendet werden?
- 22. Wie können Ereignisse wie CancelEventArgs verwendet werden?
- 23. Können Azure-Leistungstests für DDoS verwendet werden?
- 24. Observables können in Nodejs verwendet werden?
- 25. Können UILongPressGestureRecognizer und UISwipeGestureRecognizer zusammen verwendet werden?
- 26. Wo können npm-Pakete verwendet werden?
- 27. Können Operatoren als Funktionen verwendet werden? (C++)
- 28. Wie können Knotenumgebungsvariablen in Gulp verwendet werden?
- 29. Können Medienabfragen in Outlook verwendet werden
- 30. Spielevolutionen können nicht zum Laufen gebracht werden
Wenn chrome nativ activeX nicht unterstützt, können Sie es nicht einmal mit der Chrome-Erweiterung verwenden. – mehulmpt