| 

.NET C# Java Javascript Exception

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

Line: 55
Char: 143
Error: Unable to get value of the property 'load': object is null or undefined
Code: 0
URL: http://www.xxxx.xxx/xxxxxx//shared/scripts/jquery-last.js

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 ...?
27.03.2012
mupan 575 1 8
mupan 575 1 8
3 Antworten
1
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

http://msdn.microsoft.com/en-us/library/aa752043%28v=vs.85%29.aspx

finden, gut versteckt unter Legacy APIs ...
03.04.2012
mupan 575 1 8
0
Auf XP das gleiche Bild.
28.03.2012
mupan 575 1 8
mupan 575 1 8
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 ;-)
mupan 28.03.2012
0
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:

Const OLECMDID_SHOWSCRIPTERROR = 40 '&H28
Const OLECMDEXECOPT_DONTPROMPTUSER = 2

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)?
30.03.2012
mupan 575 1 8
Quatsch. WebBrowser.ExecWB OLECMDID_SHOWSCRIPTERROR setzt keine Eigenschaft.

http://www.brentlamborn.com/post/WPF-Web-Browser-ScriptErrorsSupressed.aspx

macht das in Sharp mit Reflection, das wird vielleicht den einen oder anderen hier interessieren. In VBA geht's gar nicht?
mupan 03.04.2012

Stelle deine Javascript-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH