JavaScript-Fehler im eingebetteten Internet Explorer

2653
man-qa

Ich habe ein Wallboard-Setup, um Statistiken im Büro anzuzeigen. Das Widget, das eingebetteten Internet Explorer verwendet, weist jedoch einen JavaScript-Fehler auf.

JavaScript-Fehler im eingebetteten Internet Explorer

Der Fehler kann geschlossen werden, ohne Probleme zu verursachen, aber er ist irritierend, da er immer wieder zwei bis drei Mal am Tag zurückkommt. Wenn dies der Fall ist, hindert er jeden daran, Statistiken anzuzeigen, bis er durch einen Fernzugriff auf das Wallboard geschlossen wird. Im regulären Internet Explorer kann dies einfach durch Deaktivieren der folgenden Option abgebrochen werden.

JavaScript-Fehler im eingebetteten Internet Explorer

Meine Frage ist, wie Sie dieses Skriptfehler-Popup im Internet Explorer deaktivieren, der in mein Widget eingebettet ist.

Bearbeiten: Antwort auf Antwort von harrymc

Ich habe diese Einstellungen nun mithilfe von regedit gemäß den Anweisungen von harrymc bearbeitet. Der Fehler wird jedoch immer noch angezeigt.

2
Wollen Sie damit sagen, dass Ihnen das Wallboard keinen Zugriff auf die Interneteinstellungen gibt? Außerdem ist der JS-Fehler relativ einfach zu beheben. Es fehlt eine Prüfung im Code, um mit einer Null- oder undefinierten Variablen fertig zu werden. Julian Knight vor 8 Jahren 2
Leider habe ich keinen Zugriff auf den Code, er ist alles eingebaut, so dass ich nur die Grundeinstellungen ändern kann. Ich kann die Browsereinstellungen auf dem Wallboard ändern, der eingebettete IE scheint jedoch separate Einstellungen zu verwenden man-qa vor 8 Jahren 0
können Sie die Registrierung der Maschine bearbeiten? Möglicherweise können Sie die IE-Kontrollfeldoption über die Registrierung einstellen. Kinnectus vor 8 Jahren 0
Ich kann die Registrierung bearbeiten, obwohl ich nicht sicher bin, welche die richtige Option in regedit ist (es gibt eine Menge für den IE) und wenn ich sie gefunden habe, was muss ich dann ändern? man-qa vor 8 Jahren 0
Warum korrigieren Sie nicht einfach das JavaScript, um den Fehler zu beheben? Ramhound vor 8 Jahren 0
Nebenbei bemerkt: Beachten Sie, dass Sie zwar schreiben * "Der Fehler kann geschlossen werden, ohne Probleme zu verursachen" *, es scheint, dass tatsächlich [ziemlich viel JavaScript] vorhanden ist (https://daviker.whccs.com/reports/js/ rm.ui.js) wird nicht ausgeführt, nachdem der Fehler aufgetreten ist. Wenn sich das Remoteskript eines Tages ändert, können andere Dinge fehlschlagen. Ich denke, ein Support-Ticket für den Lieferanten ist die beste Option, aber natürlich fragen Sie nicht danach. Arjan vor 8 Jahren 0
Wahrscheinlich ist es der Debugger, der den Fehler ausgibt, versuchen Sie es zu deaktivieren. S.Visser vor 8 Jahren 0
Irgendwelche Updates? Haben Sie einen meiner Vorschläge ausprobiert? Arjan vor 8 Jahren 0
Hallo Arjan, es tut mir leid, dass ich es nicht versucht habe. Die Antwort von harrymc scheint den Trick getan zu haben. Ich habe nur gewartet, ob es eine dauerhafte Lösung war man-qa vor 8 Jahren 0

2 Antworten auf die Frage

2
harrymc

Da Sie die Registrierung bearbeiten können, listet der folgende Artikel viele IE-Einstellungen auf:
So passen Sie die Einstellungen für Virtual Internet Explorer an .

Verwenden Sie die folgende .reg-Datei, um "Benachrichtigung über jeden Skriptfehler anzeigen" zu deaktivieren:

Windows Registry Editor Version 5.00  [HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main] "Error Dlg Displayed On Every Error"="no" 
Hallo harrymc, bitte sehen Sie meine Antwort oben man-qa vor 8 Jahren 0
Egal, ich glaube, ich habe es jetzt herausgefunden. Die Registry, über die Sie sich gerade befanden, war nicht auf der Pinnwand, aber sie befand sich auf meinem PC. Deshalb habe ich sie exportiert und kopiert. Ich muss nur abwarten, ob der Fehler jetzt zurückkommt man-qa vor 8 Jahren 0
Seufz, der Fehler tritt auch bei geänderter Registrierung auf man-qa vor 8 Jahren 0
Möglicherweise müssen Sie einen Neustart durchführen. harrymc vor 8 Jahren 0
Ich habe die Software neu gestartet. Meinst du den ganzen Wallboard-PC? man-qa vor 8 Jahren 0
Ja, das ist, was ich meine. harrymc vor 8 Jahren 0
Jetzt komplett neu gestartet, so dass ich den Fehler erneut beobachten kann man-qa vor 8 Jahren 0
Noch keine Fehler, wird jedoch weiterhin überwacht, da gelegentlich bekannt ist, dass er für einen Tag weggeht und dann wieder zurückkommt. man-qa vor 8 Jahren 0
2
Arjan

In diesem speziellen Fall können Sie den Fehler möglicherweise vermeiden, anstatt den Fehler zu verbergen (oder weisen Sie Ihren Lieferanten auf diesen Beitrag hin, um sein JavaScript zu korrigieren):

  • Möglicherweise gibt der Server überhaupt keinen Wert für die "geöffneten Registerkarten" im unten stehenden JavaScript zurück. Versuchen Sie, die Registerkarteneinstellungen des Widgets zu ändern, um den Server zu zwingen, einen Wert festzulegen. Wenn Sie dies nicht im Wallboard tun können, versuchen Sie es in einem normalen Browser. Hoffen Sie, dass die Einstellungen auf dem Server gespeichert werden.

Wenn dies nicht hilft, versuchen Sie Folgendes in einem "normalen" Internet Explorer-Browser:

  • Möglicherweise unterscheidet sich die Domäne der URL, die Sie verwenden, von der Domäne, aus der das Skript geladen wird (oder: der URL, von der das Widget HTML oder Daten lädt), sodass der IE das Gefühl hat, ein Cookie eines Drittanbieters zu verwenden. Also: Sehen Sie, was es Ihnen erlaubt, Cookies von Drittanbietern zuzulassen . Siehe Microsoft Blockieren, Aktivieren oder Zulassen von Cookies .

  • Das Setzen oder Lesen von Cookies in JavaScript erfordert möglicherweise zusätzliche Rechte. Also: Sehen Sie, ob das Hinzufügen daviker.whccs.comzu den vertrauenswürdigen Sites hilft, damit Sie mehr tun können? Siehe Sicherheitszonen von Microsoft : Hinzufügen oder Entfernen von Websites .

  • Möglicherweise hat der Server bereits einen Cookie mit demselben Namen gesetzt, ihn jedoch als HttpOnly markiert, sodass er von JavaScript aus nicht zugänglich ist. Löschen Sie eventuell vorhandene "Active-Tabs" -Cookies .

Hintergrund:

Der Fehler in Zeile 1546 des Skripts bezieht sich darauf, dass ein bestimmtes Cookie für dieses Skript nicht verfügbar ist, direkt nachdem dasselbe Skript versucht hat, das Cookie selbst festzulegen / zu ändern (in Zeile 1541, wo der Wert tatsächlich so aussieht, undefinedals Zeile 1533 fehlschlägt.) um das zu überprüfen):

1527 restoreTabsFromTheServer: function() 1528 { 1529 $.post("xrm_ui?get=getTabs", {}, function(responce) { 1530 1531 reportTabs.tabCaptions = responce.reportPages; 1532 // Next line only checks for an empty "openedtabs", not for // an undefined or null value; bad coding... 1533 if (responce.openedtabs == '') 1534 { 1535 $.cookie("active-tabs", ''); 1536 reportTabs.tabidSelected = undefined; 1537 reportTabs.tabindexSelected = undefined; // Next line would exit the function if we had an empty // result, but not if it is undefined or null 1538 return false; 1539 } 1540 // Next line: NO ERROR WHILE WRITING, but the new value could // be undefined, which might even clear an existing cookie? 1541 $.cookie("active-tabs", responce.openedtabs); 1542 reportTabs.tabidSelected = responce.tabidselected; 1543 reportTabs.tabindexSelected = responce.tabindexselected; 1544 1545 // restore tabs // Next line: NO RESULT WHEN READING 1546 var arr = $.cookie("active-tabs").split(','); 1547 ... 

Es scheint also, dass der eingebettete IE die JavaScript-Einstellung dieses Cookies ignoriert oder dass das Cookie den Cookie als undefiniert festlegt. Wenn Sie versuchen, den Wert zurückzulesen, ist er leer .

Ich weiß nicht, ob die eingebettete IE - Komponente der „normalen“ IE - Browser verwendet Einstellungen für Cookies. Aber ich habe sicherlich gesehen, dass eingebettete IE-Komponenten Cookies mit dem IE-Browser teilen . (Wie beim Klicken auf Links in Excel, wenn der IE nicht der Standardbrowser ist, werden IE-Cookies immer noch für einige Ermittlungen verwendet .) Wenn Sie also die Einstellungen im "regulären" IE-Browser ändern, kann JavaScript dieses Cookie in der eingebetteten Komponente setzen.


Möglicherweise ist der Wert, der vom Server in Zeile 1529 empfangen wird, möglicherweise kein gültiger Wert, wodurch das Schreiben oder Lesen fehlschlägt. So wie Kommas in Cookies nicht erlaubt sind, .split(',')wirkt das verdächtig. Aber dann: Wir wissen nicht einmal, für welches jQuery-Plugin es verwendet $.cookiewird. Daher benötigen wir viel mehr Details, um herauszufinden, ob es eine Codierung verwendet.

Ich wünschte, ich könnte Bonuspunkte bekommen, wenn Sie versuchen, das Problem anstelle eines Symptoms zu lösen (dh das Skript nicht laden oder den Fehler einfach ignorieren). Ramhound vor 8 Jahren 1
Danke, @ Ramhound. Auf der anderen Seite ist meine Antwort möglicherweise viel zu spezifisch für eine Stack Exchange-Q & A-Site (hinsichtlich der Wahrscheinlichkeit, dass ein zukünftiger Besucher das gleiche Problem hat) ... Arjan vor 8 Jahren 0
Ihre Antwort war nicht die, die ich verwendet habe, aber sie war viel besser: p man-qa vor 8 Jahren 0
Ah, wenn Sie keine Anmeldeinformationen angegeben haben, liefert ein GET an [`xrm_ui? Get = getTabs`] (https://daviker.whccs.com/reports/xrm_ui?get=getTabs) den Wert 'null' anstelle einer leeren Zeichenfolge für die anderen Werte: `{" opentabs ": null," tabindexselected ":" "," tabidselected ":" "}`. Möglicherweise geschieht dasselbe, wenn das Skript den POST ausführt, vermutlich mit einer authentifizierten Sitzung. Arjan vor 8 Jahren 0