Update: Im IE geht's auch, da gab es noch andere Probleme, die verdeckt haben, dass es mit dem auch geht. Also ist die ieframe.dll das Problem. Das Killbit für diese schon ältere ActiveX-Bibliothek ist nicht gesetzt, das hab ich grad überprüft. Grundsätzlich arbeitet ieframe.dll problemlos. JavaScript aktivieren oder nicht müsste für ieframe.dll auch in IE/Systemsteuerung, Internet-Optionen, passieren, oder? Ein Test auf einer XP-Maschine steht noch aus ... die kommt grad gaaaaaaanz XP-schnell hoch ;-) Was würdet ihr noch überprüfen, um den Fehler noch weiter einzugrenzen? Und vor allem, wie löse oder umgehe ich diesen Mist-Fehler?
Ich entwickle in Access-VBA und verwende ActiveX-Controls (hab ich mir nicht ausgesucht). Diese Frage berührt auch das Webdesign, deshalb traue ich mich, sie auf dieser sharplastigen Seite zu stellen ;-)
In einem Form automatisieren wir den IE, über ein Control vom Typ Shell.Explorer.2 (ieframe.dll, landet auf einem Win7-64bit-System im Ordner %SystemRoot%\SysWOW64\). Wir nutzen das hauptsächlich für den lesenden Zugriff auf das DOM der Seiten.
Jetzt habe ich die Situation, dass einzelne Skripte (in 3 verschiedenen Seiten auf 2 voneinander unabhängigen Servern) mit dem IE Fehler werfen. Mit Firefox oder Iron (= Chrome) passiert mir das nicht.
Den Protected Mode im IE hab ich versuchsweise mal ausgestellt, daran hängt es nicht. Will mir auch nicht recht zur Fehlermeldung passen.
Das Skript wird für die Navigation nicht benötigt; wenn ich die Fehlermeldungen wegklicke, läuft unser Programm trotzdem erfolgreich über die Seiten. Dem Kunden zu sagen, dass er 2 bis 3 Fehlermeldungen für einen erfolgreichen Seitenaufruf wegklicken muss, ist aber eher unbefriedigend; technische Erklärungen sind da meist unverstanden verschenkt, also wird das unserem Produkt angelastet.
Title: Script Error (! in triangle icon) An error has occurred in the script on this page.
Do you want to continue running scripts on this page? (Yes-Button) (No-Button)
Ähnliche Fehler wirft der Aufruf des unload events durch die Seite. Auch mit den genauen Angaben aus der Fehlermeldung (Line, Char) lässt sich die fehlerverursachende Anweisung nicht finden, wohl weil keine Umbrüche existieren und der Zeilenfall von Programm zu Programm unterschiedlich sein wird. Es gibt ein paar AddEventHandler("load") o.ä. Anweisungen in dem Skript, was für mich so aussieht, als solle der auszuführende und hier vermisste load event erst zur Laufzeit erzeugt; der IE macht das nicht (richtig), die anderen Browser schon. Ist vielleicht falsch, ich bin kein Webprogrammierer, vielleicht auch schlau, zu wenig Ahnung, deshalb frag ich ja ;-)
Habt ihr eine Idee, wie ich in meiner aktuellen Webbrowser-Session oder beim Laden der betroffenen Seiten die Skriptausführung programmatisch unterdrücken kann? Durch eine Webbrowser-Anweisung oder durch Einfügen eines HTML-Metas oder durch Löschen des Skriptaufrufs aus dem HTML-Code oder ...?
With Me.Webbrowser ... .Silent = True .Navigate strURL ... End With
Sorry, dass ich eure Zeit zum Lesen vertan habe, am Ende war's so einfach. Zu meiner Ehrenrettung: Keine (mir) offline verfügbare Referenz listet das Silent-Property. Erste Anlaufstelle ist der "Objektkatalog" im VBA-Editor. Ich musste erst
Könnte das ein Thema von 64bit und 32bit sein? Unsere Access-Anwendung ist 32bit, die Accessinstallation (Version 2010) ist 32bit, also ruft die wohl 32bit-ieframe.dll auf, und die disharmoniert dann mit dem IE 9 64bit? Ein Blick in den Taskmanager hat mir nicht gesagt, welche IE-Bandbreitenversion gerade aktiv ist. Wär ja auch zu einfach ;-)
Vielleicht liest ja hier doch der eine oder andere VBA-Crack mit. Ich finde kein Codebeispiel und keine Access-VBA-Referenz dazu, aber das muss doch rauszukriegen sein:
Sub Navigate(strURL as string) ... Dim varIn as variant, varOut as variant ... varIn = strURL varOut = "c:\temp\iescripterrors.txt" Me.WebBrowser.ExecWB OLECMDID_SHOWSCRIPTERROR, OLECMDEXECOPT_DONTPROMPTUSER, varIn, varOut
'Automation error 'Trying to revoke a drop target that has not been registered (-2147221248) ... End Sub
varIn, varOut: In VB(A) angeblich Variants, sonst references. Die Fehlermeldung bezieht sich auf varOut (oder objOut)?