Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Frage zum TWebBrowser Control und JavaScript (https://www.delphipraxis.net/137359-frage-zum-twebbrowser-control-und-javascript.html)

Assertor 19. Jul 2009 13:17


Frage zum TWebBrowser Control und JavaScript
 
Hi DPler,

ich habe ein Problem mit dem MS WebBrowser Control.

Hintergrund: Ich binde den TinyMCE HTML Editor ein, funktioniert auch alles und über das External Interface und einer TypeLibrary kann ich das bearbeitete HTML per JavaScript lesen und schreiben.

Nun wollte ich die HTML Datei, die den TinyMCE konfiguriert und startet gerne auf Mehrsprachigkeit und Farbschema-Anpassung vorbereiten. Dafür muß ich dies zur Laufzeit vor dem Starten des Editors festlegen. Mein Ansatz ging jetzt dahin, die Index.html zur Anzeige einfach in einen Stream zu laden, die Anpassung vorzunehmen und den Stream im TWebBrowser anzuzeigen.

Das Problem: Sobald ich das HTML mit dem Editor-Skriptaufruf nicht aus einer Datei starte, sondern den TWebBrowser aus einem Stream anzeigen lasse, schlägt die Security Zone zu (Disable Scripting for Web Browser Control im IE7/8, u.U. auch IE6) und läßt mich wissen "Access Denied".

Ich sehe jetzt nur die Alternative, die verschiedenen Farbschemata (3 Stk). und Sprachen (5 Stk.) in den möglichen Kombinationen fest zu hinterlegen. Dies würde heißen, daß ich 15 Index-Dateien beifügen muß. Diese Ansatz gefällt mir aber irgendwie nicht :wink:

Hatte jemand schon das gleiche Problem, war Abhilfe möglich z.B. über CoInternetSetFeatureEnable(FEATURE_LOCALMACHINE_LO CKDOWN, SET_FEATURE_ON_PROCESS, bool) o.ä.? Übersehe ich eine Alternative?

Gruß Assertor

Andreas L. 19. Jul 2009 13:42

Re: Frage zum TWebBrowser Control und JavaScript
 
Wenn du den EmbeddedWb hast kannst du mal versuchen deinen veränderten HTML-Code über die Eigenschaft HTMLCode in den Browser zu laden. Ansonsten gibts noch die Komponente TEwbControl, vllt. bewirkt die Eigenschaft ZoneElevation was. Und einen TSecurityManager gibts auch noch.

Assertor 19. Jul 2009 14:41

Re: Frage zum TWebBrowser Control und JavaScript
 
Hi Andreas,

Zitat:

Zitat von Andreas L.
Wenn du den EmbeddedWb hast kannst du mal versuchen deinen veränderten HTML-Code über die Eigenschaft HTMLCode in den Browser zu laden. Ansonsten gibts noch die Komponente TEwbControl, vllt. bewirkt die Eigenschaft ZoneElevation was. Und einen TSecurityManager gibts auch noch.

Danke für die Hilfe!

Über den Security Manager habe ich auch gerade im MSDN gelesen, jetzt kam mir aber eine einfachere Idee: Ich habe weitere External Funktionen der Typelibrary hinzugefügt und setzte vor dem Laden der statischen Seite per Callback Skin und Sprache.

Laden des HTML aus einem String/Stream geht nicht, da diese im Security-Context von about:blank und damit per Default in der Zone Internet läuft und somit keine lokalen Dateien/Skripte ausführen darf. Das wäre wirklich nur über umfangreiche Eingriffe in den Security Manager möglich.

Egal, über die eingeführte external.GetLanguage() und external.GetSkin() kann die HTML Seite beim Laden Delphi fragen, was denn gewünscht ist und ich kann bei einem Sprach/Skinwechsel das Interface fragen, welche Einstellungen gerade gesetzt sind um diese zu aktualisieren :)

Gruß Assertor
:dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz