web-dev-qa-db-ja.com

埋め込まれたInternetExplorerでのJavaScriptエラー

オフィスで統計を表示するためのウォールボード設定がありますが、埋め込みInternetExplorerを使用するウィジェットでJavaScriptエラーが発生し続けます。

enter image description here

エラーは問題なく閉じることができますが、1日に2〜3回程度頻繁に戻ってくるため、イライラします。エラーが発生すると、ウォールボードにリモートアクセスして閉じるまで統計を表示できなくなります。通常のInternetExplorerでは、以下のオプションのチェックを外すことで簡単に停止できます。

enter image description here

私の質問は、ウィジェットに埋め込まれているInternet Explorerでこのスクリプトエラーポップアップを無効にする方法です。

編集:harrymcからの回答への応答

Harrymcの指示に従ってregeditを使用してこれらの設定を編集しましたが、それでもエラーが表示されます。

3
man-qa

レジストリを編集できるので、次の記事には多くのIE設定がリストされています:
Virtual Internet Explorerの設定をカスタマイズする方法

「すべてのスクリプトエラーに関する通知を表示する」を無効にするには、次の.regファイルを使用します。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"Error Dlg Displayed On Every Error"="no"
2
harrymc

この特定のケースでは、エラーを非表示にしようとするのではなく、エラーを完全に回避できる可能性があります(または、サプライヤーにこの投稿を参照してJavaScriptを修正してください)。

  • たぶん、サーバーは以下のJavaScriptの「開いたタブ」に対してまったく値を返しません。 ウィジェットのタブ設定を変更して、サーバーに何らかの値を設定させてみてください。ウォールボードでこれを行うことができない場合は、通常のブラウザで試してみてください。そうすると、設定がサーバーに保存されます。

これで問題が解決しない場合は、「通常の」InternetExplorerブラウザで次のことを試してください。

  • 使用しているURLのドメインが、スクリプトのロード元のドメイン(またはウィジェットがHTMLまたはデータのロード元のURL)と異なっている可能性があり、IEは3分の1を処理していると感じます。 -パーティCookie。だから:サードパーティのCookieを許可すると何が得られるかを見てください。 Microsoftの Cookieをブロック、有効化、または許可 を参照してください。

  • JavaScriptでCookieを設定または読み取るには、追加の権限が必要な場合があります。だから:信頼できるサイトに_daviker.whccs.com_を追加することが役立つかどうかを確認してください、もう少しできるようにしますか? Microsoftの セキュリティゾーン:Webサイトの追加または削除 を参照してください。

  • サーバーがすでに同じ名前のCookieを設定しているが、それを HttpOnly とマークして、JavaScriptからアクセスできないようにしている可能性があります。 既存の「アクティブタブ」Cookieを削除してみてください

バックグラウンド:

スクリプト の1546行目のエラーは、まったく同じスクリプトがそのCookie自体を設定/変更しようとした直後に、そのスクリプトで使用できない特定のCookieに関連しています(1541行目、その値1533行目がそれをチェックできないため、実際にはundefinedである可能性があります):

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

したがって、埋め込まれたIEがCookieのJavaScript設定を無視しているか、JavaScriptがCookieを未定義に設定しているようです。そして、その値を読み戻そうとすると、それは空です

埋め込まれたIEコンポーネントがCookieに「通常の」IEブラウザ設定を使用しているかどうかはわかりません。しかし、私は確かにIEブラウザで埋め込まれたIEコンポーネント共有クッキーを見てきました。 (IEがデフォルトのブラウザではないときにExcelでリンクをクリックするときのように、 IE Cookieは引き続き一部の検出に使用されます 。)したがって、「通常の」_の設定を変更する可能性があります。IEブラウザは、JavaScriptが埋め込みコンポーネントにこのCookieを設定できるようにします。


あるいは、1529行目でサーバーから受信した値が有効な値ではないため、書き込みまたは読み取りが失敗する可能性があります。 Cookieではカンマは許可されていません のように、.split(',')は疑わしいように見えます。ただし、_$.cookie_にどのjQueryプラグインが使用されているかさえわからないため、エンコードを使用しているかどうかを判断するには、さらに詳細な情報が必要になります。

3
Arjan