
Ich habe ein Wallboard zur Anzeige von Statistiken im Büro eingerichtet, das Widget, das den eingebetteten Internet Explorer verwendet, zeigt jedoch immer wieder einen JavaScript-Fehler an.
Der Fehler kann ohne Probleme geschlossen werden, ist aber ärgerlich, da er immer wieder auftritt, etwa 2-3 Mal am Tag. Wenn dies der Fall ist, kann niemand Statistiken anzeigen, bis er durch Fernzugriff auf das Wallboard geschlossen wird. Im normalen Internet Explorer kann dies einfach gestoppt werden, indem die Option unten deaktiviert wird.
Meine Frage lautet: Wie kann ich dieses Skriptfehler-Popup im Internet Explorer deaktivieren, das in mein Widget eingebettet ist?
Bearbeiten: Antwort auf die Antwort von harrymc
Ich habe diese Einstellungen jetzt mit regedit gemäß den Anweisungen von harrymc bearbeitet, der Fehler tritt jedoch weiterhin auf.
Antwort1
Da Sie die Registrierung bearbeiten können, listet der folgende Artikel viele IE-Einstellungen auf:
So passen Sie die Einstellungen des virtuellen Internet Explorers an.
Um „Bei jedem Skriptfehler eine Benachrichtigung anzeigen“ zu deaktivieren, verwenden Sie die folgende REG-Datei:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"Error Dlg Displayed On Every Error"="no"
Antwort2
Anstatt zu versuchen, den Fehler zu verbergen, können Sie ihn in diesem speziellen Fall möglicherweise ganz vermeiden (oder Ihren Lieferanten auf diesen Beitrag verweisen, damit er sein JavaScript korrigiert):
- Möglicherweise gibt der Server für die „geöffneten Tabs“ im folgenden JavaScript überhaupt keinen Wert zurück;Versuchen Sie, die Registerkarteneinstellungen des Widgets zu ändernum den Server zu zwingen, einen bestimmten Wert festzulegen. Wenn dies im Wallboard nicht möglich ist, versuchen Sie es in einem normalen Browser und hoffen Sie, dass die Einstellungen dadurch 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 von Ihnen verwendeten URL von der, von der das Skript geladen wird (oder: der URL, von der das Widget sein HTML oder seine Daten lädt), sodass der IE den Eindruck hat, dass er ein Drittanbieter-Cookie verarbeitet. Also:Erfahren Sie, welche Vorteile Ihnen das Zulassen von Cookies von Drittanbietern bietet. Siehe MicrosoftsCookies blockieren, aktivieren oder zulassen.
Möglicherweise sind für das Setzen oder Lesen von Cookies in JavaScript zusätzliche Rechte erforderlich. Also:prüfen, ob das Hinzufügen
daviker.whccs.com
zu den vertrauenswürdigen Sites hilft, um ihm ein bisschen mehr zu ermöglichen? Siehe MicrosoftsSicherheitszonen: Websites hinzufügen oder entfernen.Möglicherweise hat der Server bereits ein Cookie mit demselben Namen gesetzt, es aber alsNur Http, wodurch es von JavaScript aus nicht mehr zugänglich ist.Versuchen Sie, alle vorhandenen „Active-Tabs“-Cookies zu löschen.
Hintergrund:
Der Fehler in Zeile 1546 vonDas Skripthängt damit zusammen, dass ein bestimmtes Cookie für dieses Skript nicht verfügbar ist, direkt nachdem dasselbe Skript versucht hat, dieses Cookie selbst zu setzen/ändern (in Zeile 1541, wo sich sein Wert tatsächlich befinden könnte, undefined
da Zeile 1533 dies nicht überprüft):
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 das JavaScript ignoriert, das dieses Cookie setzt, oder dass das JavaScript das Cookie auf undefiniert setzt. Und dann, wenn ich versuche, seinen Wert zurückzulesen, ist er leer † .
Ich weiß nicht, ob die eingebettete IE-Komponente den "normalen" IE-Browser verwendetEinstellungenfür Cookies. Aber ich habe sicherlich eingebettete IE-Komponenten gesehenAktieCookies mit dem IE-Browser. (Wie beim Klicken auf Links in Excel, wenn IE nicht der Standardbrowser ist,IE-Cookies werden immer noch für einige Entdeckungszwecke verwendet.) Wenn Sie also die Einstellungen im „normalen“ Internet Explorer-Browser ändern, kann JavaScript dieses Cookie möglicherweise in der eingebetteten Komponente setzen.
† Alternativ ist der Wert, der vom Server in Zeile 1529 empfangen wird, möglicherweise kein gültiger Wert, wodurch das Schreiben oder Lesen fehlschlägt. WieKommas sind in Cookies nicht erlaubt, also .split(',')
sieht das verdächtig aus. Aber andererseits: Wir wissen nicht einmal, welches jQuery-Plugin für verwendet wird $.cookie
, also bräuchten wir viel mehr Details, um herauszufinden, ob es eine Kodierung verwendet.
Antwort3
Wer einen ähnlichen Fall mit Windows 11 erlebt, wird möglicherweise frustriert sein, dass die Möglichkeit, „Bei jedem Skriptfehler eine Benachrichtigung anzeigen“ zu deaktivieren, in den Internetoptionen nicht mehr verfügbar ist. Auch die hervorragende Lösung von harrymc, diese Einstellung über die Registrierung zu ändern, scheint vom Internet Explorer jetzt ignoriert zu werden.
Wenn Sie einfach nur eine lästige Aufforderung einer bestimmten App vermeiden möchten, die eine bestimmte URL aufruft, besteht eine mögliche Lösung darin, die Ausführung von Skripts auf dieser Website vollständig zu verhindern (sofern die Funktionalität Ihrer App dadurch nicht beeinträchtigt wird). Der einfachste Weg, dies zu erreichen, ist wie folgt:
- Drücken Sie Start, geben Sie „Internetoptionen“ ein und drücken Sie die Eingabetaste.
- Klicken Sie unter der Registerkarte „Sicherheit“ auf „Eingeschränkte Sites“ und dann auf „Sites“. Unter der Registerkarte „Sicherheit“ in den Internetoptionen gibt es eine Zone mit der Bezeichnung „Eingeschränkte Sites“, die wie ein Verbotsschild aussieht. Klicken Sie darauf und dann darunter auf die Schaltfläche „Sites“.
- Geben Sie die Website ein, für die Sie Skripte deaktivieren möchten, und klicken Sie auf „Hinzufügen“. Geben Sie im Textfeld „Diese Website zur Zone hinzufügen“ die Website ein, die Sie hinzufügen möchten (normalerweise ohne Pfadsuffix), und klicken Sie auf „Hinzufügen“. Im Fall dieses Artikels könnte die Websitehttps://daviker.whccs.com Sie können eine zuvor hinzugefügte Website auswählen und auf „Entfernen“ klicken, um diese Zone weiter zu konfigurieren.
Klicken Sie auf „Schließen“ und dann auf „OK“.