2017-04-13 4 views
0

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?

+3

Wenn chrome nativ activeX nicht unterstützt, können Sie es nicht einmal mit der Chrome-Erweiterung verwenden. – mehulmpt

Antwort

0

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.

+2

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. –

+0

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. –

Verwandte Themen