Da mußt DU nichts aufrufen sondern das funktioniert nach dem Motto: Ruf' mich nicht an, ich rufe Dich an.
Du stellst nur das Interface bereit, das dann vom WebBrowser abgefragt wird, wenn es dem IE danach ist.
Die Exceptions werden ausgelöst, weil ein Objekt aus WebBrowser2 im WebBrowser1 genutzt werden soll. Das geht aber nicht, da die Gültigkeit der verwendeten Interfaces auf den jeweiligen Browser beschränkt ist.
Ein Beispiel dazu:
Wird mit
TMarkerOptions.Create ein Objekt erstellt, geschieht das im Kontext des zuletzt erstellten
Script-Objektes (was dann wahrscheinlich WebBrowser2 ist). Wird jetzt der Marker im WebBrowser1 mit
New(Script(WebBrowser1).Google.Maps.Marker(MarkerO ptions)) oder implizit mit
with Script(WebBrowser1) do New(Google.Maps.Marker(MarkerOptions)) erstellt, geht das aus den anfangs geschilderten Gründen schief.
Hier muß also auch das
MarkerOptions-Objekt im entsprechenden Kontext erstellt werden. Um das zu steuern, muß in der Create-Methode das entsprechende
Script-Objekt angegeben werden:
TMarkerOptions.Create(Script(WebBrowser1)).
Da das mächtig umständlich ist, werden in Version 3 auch für alle Hilfsobjekte entsprechende
New()-Funktionen eingeführt:
Delphi-Quellcode:
with Script(WebBrowser1) do
begin
MarkerOptions:=New(Google.Maps.MarkerOptions);
[...]
New(Google.Maps.Marker(MarkerOptions));
end;
Damit "wissen" alle Objekte, zu welchem WebBrowser sie gehören sollen.
Bis dahin muß leider noch das entsprechende
Script-Objekt als Parameter an den Constructor übergeben werden, wenn Objekte auf die herkömmliche Delphi-Art erstellt werden.