組み込みの Internet Explorer での JavaScript エラー

組み込みの Internet Explorer での JavaScript エラー

オフィスで統計情報を表示するためのウォールボードを設定していますが、埋め込まれた Internet Explorer を使用するウィジェットで JavaScript エラーが発生し続けます。

ここに画像の説明を入力してください

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

ここに画像の説明を入力してください

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

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

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

答え1

レジストリを編集できるので、次の記事に多くの IE 設定がリストされています。
仮想インターネット エクスプローラーの設定をカスタマイズする方法

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

Windows Registry Editor Version 5.00

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

答え2

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

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

それでも問題が解決しない場合は、「通常の」Internet Explorer ブラウザで次の操作を試してください。

  • おそらく、使用している URL のドメインが、スクリプトがロードされるドメイン (またはウィジェットが HTML またはデータをロードする URL) と異なるため、IE はサードパーティの Cookie を処理していると認識します。そのため、次のようになります。サードパーティのCookieを許可すると何が起こるかを確認するマイクロソフトのクッキーをブロック、有効化、または許可する

  • JavaScript で Cookie を設定または読み取るには、追加の権限が必要になる可能性があります。そのため、次のようになります。daviker.whccs.com信頼できるサイトに追加することで改善されるか確認する、もう少し多くのことができるようにするには?マイクロソフトのセキュリティゾーン: ウェブサイトの追加または削除

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

背景:

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

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コンポーネントが「通常の」IEブラウザを使用するかどうかはわかりません設定クッキー用。しかし、IEのコンポーネントが埋め込まれているのを見たことがある。共有IEブラウザでCookieを使用します。(IEがデフォルトのブラウザではないときにExcelのリンクをクリックする場合など)IEのクッキーは依然としていくつかの検出に使用されている) そのため、「通常の」IE ブラウザの設定を変更すると、JavaScript が埋め込みコンポーネントにこの Cookie を設定できるようになる可能性があります。


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

答え3

Windows 11 でこれと似たようなケースを経験している人は、インターネット オプションで「スクリプト エラーごとに通知を表示する」のチェックを外す機能が利用できなくなったことに不満を感じるかもしれません。レジストリを介してこの設定を変更するという harrymc の優れたソリューションも、現在 Internet Explorer では無視されているようです。

特定の URL を呼び出す特定のアプリからの煩わしいプロンプトを回避したいだけの場合、考えられる解決策の 1 つは、その Web サイトでスクリプトの実行を完全に禁止することです (これによってアプリの機能が損なわれない場合)。これを実現する最も簡単な方法は次のとおりです。

  • スタートを押して、「インターネット オプション」と入力し、Enter キーを押します。スタートメニューのインターネットオプション検索一致
  • セキュリティタブで「制限付きサイト」をクリックし、「サイト」をクリックします。インターネットオプションのセキュリティタブの下には、立ち入り禁止の標識のような制限付きサイトというゾーンがあります。それをクリックし、その下のサイトボタンをクリックします。インターネットオプションのセキュリティタブの下に、立ち入り禁止の標識のような「制限付きサイト」というゾーンがあります。それをクリックし、その下の「サイト」ボタンをクリックします。
  • スクリプトを無効にしたいウェブサイトを入力し、「追加」をクリックします。「このウェブサイトをゾーンに追加する」テキストボックスの下に、追加したいウェブサイト(通常はパスサフィックスなし)を入力し、「追加」をクリックします。この記事の場合、ウェブサイトは次のようになります。https://daviker.whccs.com 以前に追加した Web サイトを選択し、[削除] をクリックしてこのゾーンをさらに構成することができます。[この Web サイトをゾーンに追加する] テキスト ボックスで、追加する Web サイト (通常はパス サフィックスなし) を入力し、[追加] をクリックします。この記事の場合、Web サイトは https://daviker.whccs.com になります。以前に追加した Web サイトを選択し、[削除] をクリックしてこのゾーンをさらに構成することもできます。

[閉じる] をクリックし、[OK] をクリックします。

関連情報