Laden...

[Erledigt] WebBrowser Control -> Javascript Error

Erstellt von Christoph1972 vor 8 Jahren Letzter Beitrag vor 8 Jahren 7.084 Views
Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren
[Erledigt] WebBrowser Control -> Javascript Error

Hallo zusammen!

Ich habe ein HTML-Dokument, dieses möchte ich in einem WebBrowser Steuerelement in meiner Anwendung anzeigen. Leide bekomme ich einen Javascript Fehler und die Seite wird nicht angezeigt. "ScriptErrorsSuppressed = true" behebt das Problem nicht, das unterdrückt nur die Fehlermeldung, das Script wird nicht weiter ausgeführt. Das HTML-Dokument ist jedenfalls soweit ok, wenn ich es direckt mit FireFox oder dem Internet Explorer öffne funktioniert es. Was ist denn bitte an dem WebBroser Control anders? Die Internet Explorer Version vom WebBrowser Control ist 9.0, daran sollte es schon mal nicht liegen.

Hat vielleicht jemand Lust sich das Projekt mal anzuschauen? Das würde ich wirklich super finden! Liegt es eventuell an der URI, wie die zusammengesetzt wird? Das HTML Dokument wird Lokal aufgerufen, ein Web Server kommt nicht zu Einsatz, dehalb befindet sich das gesamte HTML Projekt mit in meinem Projektordner.

Leider ist das Web Programm insgesamt so groß, das ich es nicht direckt anhängen kann. gelöscht

Das betreffende Dokument ist ketcher-example.html

Über eurer Unterstüzung würde ich mich wie immer sehr freuen!

LG
Christoph

Gruß
Christoph

148 Beiträge seit 2013
vor 8 Jahren

Probier es mal mit:


((InternetExplorer) WEBBROWSER.ActiveXInstance).Silent = true;

Das sollte die Dialogbox unterdrückt, aber führt das Skript weiter aus. Dazu musst du deinem Projekt die Referenz (COM) zu "Microsoft Internet Controls" hinzufügen. Dadurch werden ALLE Dialogboxen die vom Browser kommen würden (Debug-Info usw.) unterdrückt, aber nicht die Dialogboxen die z.B. von einem "alert" kommen.

Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

Hallo,

vielen Dank für deine Unterstützung! Leider wird die Seite nach wie vor nicht angezeigt. Aus irgendeinem Grund wird das Script nicht ausgeführt. Irgend wie müssen sich der IE vom WebBrowser und der IE unterscheiden, sonst würde es ja laufen.

Gibt es sonst noch Ideen und Anregungen? Wäre wirklich toll wenn ich das irgendwie ans laufen bekomme.

Gruß
Christoph

Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

So, das Problem ist soweit gelöst. Ich verwende nun nicht mehr das standard WebBrowser Control. Ich habe mir das von http://www.awesomium.com/ besorgt und nun läuft alles so wie ich mir das vorgestellt habe.

Vielen Dank für eure Unterstützung!

Gruß
Christoph

5.657 Beiträge seit 2006
vor 8 Jahren

Hi Christoph1972,

Leider ist das Web Programm insgesamt so groß, das ich es nicht direckt anhängen kann.

Wer sollte sich denn auch ein Projekt anschauen, das größer als 20 Mb ist, um für dich den Fehler zu suchen? 🤔

Kannst du denn nicht einfach erstmal die Fehlermeldung und die Zeile (oder die Funktion) posten, in der der Fehler auftritt? Siehe auch [Hinweis] Wie poste ich richtig? 4, 4.1, 4.2 und 5.

Christian

Weeks of programming can save you hours of planning

Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

Hi,

ich denke ohne das gesamte Projekt hätte mir niemand helfen können.


chem.file.partitionLine = function (/*string*/ str, /*array of int*/ parts, /*bool*/ withspace)
{
	var res = [];
	for (var i = 0, shift = 0; i < parts.length; ++i)
	{
		res.push(str.slice(shift, shift + parts[i]));
		if (withspace)
			shift++;
		shift += parts[i];
	}
	return res;
};

slice ist laut der Fehlermeldung null. Wenn dir was dazu einfällt würde ich mich sehr freuen, eine Lösung "out of the box" würde ich immer vorziehen.

LG
Christoph

Gruß
Christoph

2.207 Beiträge seit 2011
vor 8 Jahren

Hallo Christoph1972,

wenn du schon siehst, was null ist ("slice" ist sicherlich nicht null. Du meinst sicher das Ergebnis der Slice-Methode) dann ist es doch naheliegend mal die Parameter zu überprüfen und mal nachzuschauen, was die slice Methode macht. Dann kommst du sicherlich auch drauf, warum das Ergebnis "null" ist.

JavaScript Array slice() Method

Gruss

Coffeebean

5.657 Beiträge seit 2006
vor 8 Jahren

ich denke ohne das gesamte Projekt hätte mir niemand helfen können.

Wie soll dir denn jemand helfen können (ob mit oder ohne Projekt), wenn du den Fehler nicht beschreibst?

slice ist laut der Fehlermeldung null.

Dann ist entweder str kein String oder jemand hat String.prototype.slice überschrieben. Laß dir doch an der Stelle mal den Wert von str und String.prototype.slice ausgeben.

Christian

Weeks of programming can save you hours of planning

Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

Danke für eure Rückmeldungen. Also die Fehlermeldung sagt - das slice null ist, das habe ich einfach mal geglaubt. (Ich habe es nicht hinbekommen den Javascript code zu debuggen.) Ich bin davon ausgegangen, das es sich um einen Bug in dem WebBrowser Control handelt, da die Seite ja grundsätzlich funktioniert. Deshalb habe ich das Control ausgetauscht und nun läuft alles. Ich bin davon ausgegangen, das mir niemand ohne das Projekt helfen kann, daher habe ich es angehängt. Kleiner ging es nicht, die größe macht das WebProjek, ist quasi ein Einzeiler (Webrowser.Navigate(..)). Und was sind heute schon 20mb?

Gruß
Christoph

5.657 Beiträge seit 2006
vor 8 Jahren

Also die Fehlermeldung sagt - das slice null ist, das habe ich einfach mal geglaubt. (Ich habe es nicht hinbekommen den Javascript code zu debuggen.)

Man kann sich das Leben aber auch schwer machen. Anstatt der Fehlermeldung nachzugehen, postest du einfach das gesamte Projekt, und wir sollen dann deine Arbeit machen?

Bitte lies dir unbedingt unseren [Hinweis] Wie poste ich richtig? durch. Diese Regeln gelten auch für dich!

Weeks of programming can save you hours of planning

Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

Sorry, aber ich kenne mich mit Webprogrammierung nicht aus und war mit meinem Latein am Ende. Ich habe mich Stundenlang mit dem Problem beschäftigt, es ist also nicht so, das andere meine Arbeit machen sollen. Ich habe mir nur Unterstützung von jemanden erhofft, der sich gut mit Javascript und idealer weise mit dem WebBroswer auskennt. Wer das Projekt nicht hat, kann mir auch nicht helfen, ganz einfach. Eine Reduzierung wäre nicht möglich gewesen, da es ein Javascript Programm und ein WPF Projekt mit einem Einzeiler war, mehr nicht. Es waren übrigens auch nur 560Kb und keine 20MB. Von daher finde ich meinen Thread nicht wirklich unangemessen.

Na ja, trotzdem vielen Dank für deine kompetente Hilfe!

LG
Christoph

Gruß
Christoph

5.657 Beiträge seit 2006
vor 8 Jahren

Ich finde deinen Beitrag nicht unangemessen. Unangemessen finde ich nur, einfach ein Projekt zu posten, ohne überhaupt eine Fehlerbeschreibung anzugeben. Das fällt definitiv unter [Hinweis] Wie poste ich richtig? Punkt 4.2.

Was dein Problem betrifft, haben wir ja die Ursache relativ nah eingrenzen können, und du hast einige Hinweise bekommen, wonach man als nächstes schauen kann. Wie man Javascript debuggen kann, ist relativ leicht herauszufinden: Einfach im Browser F12 drücken, Debugger auswählen, einen Haltepunkt setzen und sich die Variablenwerte anzeigen zu lassen, ähnlich wie in [Artikel] Debugger: Wie verwende ich den von Visual Studio? beschrieben. Im Internet findest du dazu auch gute Anleitungen.

Wenn du dich aber entschieden hast, ein Browser-Control einzusetzen, das den Fehler einfach ignoriert, dann hast du den Fehler dadurch noch lange nicht behoben. Du solltest dir bewußt sein, daß der Fehler weitere Fehler nach sich ziehen kann.

Das alles ließe sich aber auch vermeiden, indem man Unit-Tests für seinen Code schreibt. Auch für Javascript gibt es gute Testumgebungen.

Christian

Weeks of programming can save you hours of planning

Christoph1972 Themenstarter:in
212 Beiträge seit 2008
vor 8 Jahren

Hi,

der Code ist nicht von mir (deswegen habe ich ihn auch wieder entfernt) , ich darf ihn nur nutzen, ist quasi wie eine externe DLL für mein Projekt. Daher keine Testumgebung oder Unittest oder sonstiges. F12 gibt es im WebBrowser Control nicht. Das Debugging habe ich anhand dieser Anleitung versucht, leider springt der Debugger nicht darauf an, gut möglich das ich zu blöd bin. Und wie gesagt die Webseite läuft in allen Browsern ohne probleme, eben nur nicht im WebBrowser Control.

Aber wenn du dir so sicher bist dass das alles kein Problem ist, dann darfst du mir gerne helfen, ich würde mich jedenfalls riesig freuen! Aber ehrlich gesagt glaube ich nicht das du das drauf hast, dafür braucht es schon richtige Könner 👅

[EDIT]

So, ich war kurz 10Km laufen und habe das ganze noch mal überdacht. Hiermit ziehe ich meine Bitte um Hilfe zurück! Und zwar gefällt mir die Lösung mit Third Party Equipment nun doch besser als gedacht, da meine Anwendung so vor ungewollten Updates geschützt ist. Das wäre bei dem WebBrowser nicht der Fall, da der ja immer auf die aktuelle IE Version aufsetzt. So habe ich eine Lösung die auch noch in 10 Jahren läuft.

Also Leute, vielen Dank für die Unterstützung!

LG
Christoph

Gruß
Christoph