嵌入式 Internet Explorer 上的 JavaScript 錯誤

嵌入式 Internet Explorer 上的 JavaScript 錯誤

我在辦公室設定了一個牆板來顯示統計數據,但使用嵌入式 Internet Explorer 的小工具不斷出現 JavaScript 錯誤。

在此輸入影像描述

該錯誤可以在不引起問題的情況下關閉,但它很煩人,因為它每天大約會出現2-3 次,並且當它出現時,它會阻止任何人查看統計數據,直到通過遠端訪問牆板將其關閉。在常規 Internet Explorer 中,可以透過取消選取以下選項輕鬆停止此操作。

在此輸入影像描述

我的問題是如何停用嵌入到我的小部件中的 Internet Explorer 中的此腳本錯誤彈出視窗?

編輯:對 harrymc 的回答的回應

我現在已經按照 harrymc 的說明使用 regedit 編輯了這些設置,但仍然彈出錯誤。

答案1

由於您可以編輯註冊表,因此以下文章列出了許多 IE 設定:
如何自訂虛擬 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

在這種特定情況下,您也許可以完全避免它,而不是試圖隱藏錯誤(或將您的供應商指向這篇文章以修復他們的 JavaScript):

  • 也許伺服器對於下面 JavaScript 中的「開啟的選項卡」根本不回傳任何值;嘗試更改小部件的選項卡設置強制伺服器設定某個值。如果您無法在牆板中執行此操作,請嘗試使用常規瀏覽器,希望這樣可以將設定儲存到伺服器。

如果這不起作用,請在「常規」Internet Explorer 瀏覽器中嘗試以下操作:

  • 也許您使用的 URL 網域與載入腳本的網域不同(或:小工具載入其 HTML 或資料的 URL),讓 IE 感覺它正在處理第三方 cookie。所以:看看允許第三方 cookie 會為您帶來什麼。參見微軟的封鎖、啟用或允許 cookie

  • 也許在 JavaScript 中設定或讀取 cookie 需要一些額外的權限。所以:看看新增daviker.whccs.com到受信任的網站是否有幫助,讓它做更多的事情?參見微軟的安全區域:新增或刪除網站

  • 也許伺服器已經設定了一個同名的cookie,但將其標記為僅HTTP,使其無法從 JavaScript 存取。嘗試刪除任何現有的「active-tabs」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 組件分享cookie 與 IE 瀏覽器。 (就像在 IE 不是預設瀏覽器時點擊 Excel 中的連結一樣,IE cookie 仍用於某些發現.) 因此,也許更改「常規」IE 瀏覽器中的設定將允許 JavaScript 在嵌入式元件中設定此 cookie。


或者,第 1529 行從伺服器接收的值可能不是有效值,導致寫入或讀取失敗。喜歡cookie 中不允許使用逗號,所以.split(',')看起來很可疑。但是:我們甚至不知道哪個 jQuery 插件用於$.cookie,因此我們需要更多詳細資訊來確定它是否使用某種編碼。

答案3

對於在 Windows 11 中遇到類似情況的任何人,您可能會感到沮喪,因為 Internet 選項中不再提供取消選取「顯示有關每個腳本錯誤的通知」的功能。 harrymc 透過登錄機碼修改此設定的出色解決方案現在似乎也被 Internet Explorer 忽略了。

如果您只是想避免調用特定 URL 的給定應用程式出現煩人的提示,一種可能的解決方案是完全阻止腳本在該網站上運行(如果這不會破壞您的應用程式的功能)。實現這一目標最簡單的方法如下:

  • 按“開始”,鍵入“Internet 選項”,然後按 Enter。Internet 選項在開始功能表中搜尋符合項
  • 在“安全性”標籤下,按一下“受限網站”,然後按一下“網站”。在「Internet 選項」的「安全性」標籤下,有一個標記為「受限網站」的區域,看起來像是禁止進入的標誌。按一下該按鈕,然後按一下下面的「網站」按鈕在「Internet 選項」的「安全性」標籤下,有一個標記為「受限網站」的區域,看起來像是禁止進入的標誌。按一下該按鈕,然後按一下下面的「網站」按鈕
  • 輸入您想要停用腳本的網站,然後按一下「新增」。在「將此網站新增至區域」文字方塊中,鍵入您要新增的網站(通常沒有任何路徑後綴),然後按一下「新增」。對於本文中的案例,該網站可能是https://daviker.whccs.com 您可以選擇先前新增的網站,然後按一下「刪除」以進一步配置該區域。在「將此網站新增至區域」文字方塊中,鍵入您要新增的網站(通常沒有任何路徑後綴),然後按一下「新增」。對於本文中的情況,網站可能是 https://daviker.whccs.com 您可以選擇先前新增的網站,然後按一下「刪除」以進一步配置此區域。

按一下“關閉”,然後按一下“確定”。

相關內容