我设置了一块墙板来显示办公室的统计数据,但是使用嵌入式 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 中的“打开的标签”根本没有返回任何值;尝试更改小部件的选项卡设置强制服务器设置某个值。如果您无法在 Wallboard 中执行此操作,请尝试在常规浏览器中执行此操作,希望这样可以将设置保存到服务器。
如果此方法无效,请在“常规” Internet Explorer 浏览器中尝试以下操作:
也许您使用的 URL 的域与加载脚本的域不同(或者:小部件加载其 HTML 或数据的 URL),这让 IE 感觉它正在处理第三方 cookie。所以:看看允许第三方 Cookie 会带来什么. 参见微软阻止、启用或允许 Cookie。
也许在 JavaScript 中设置或读取 cookie 需要一些额外的权限。所以:看看添加
daviker.whccs.com
到受信任的站点是否有帮助,让它做更多的事情?请参阅微软的安全区域:添加或删除网站。也许服务器已经设置了同名的 cookie,但将其标记为HttpOnly,从而无法通过 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 似乎忽略了 JavaScript 设置该 cookie,或者 JavaScript 将 cookie 设置为未定义。然后,当尝试读回其值时,它为空†。
我不知道嵌入的 IE 组件是否使用“常规” IE 浏览器设置用于 cookies。但我确实见过嵌入的 IE 组件分享IE 浏览器的 cookie。(例如,当 IE 不是默认浏览器时,单击 Excel 中的链接时,IE Cookie 仍用于某些发现。)因此,也许更改“常规” IE 浏览器中的设置将允许 JavaScript 在嵌入的组件中设置此 cookie。
†或者,第 1529 行从服务器收到的值可能不是有效值,导致写入或读取失败。例如Cookie 中不允许使用逗号,所以.split(',')
看起来很可疑。但是:我们甚至不知道使用了哪个 jQuery 插件$.cookie
,所以我们需要更多细节才能确定它是否使用了一些编码。
答案3
对于任何在 Windows 11 中遇到类似情况的人,您可能会感到沮丧,因为 Internet 选项中不再提供取消勾选“显示有关每个脚本错误的通知”的功能。harrymc 提供的通过注册表修改此设置的出色解决方案现在似乎也被 Internet Explorer 忽略了。
如果您只是想避免某个应用程序调用特定 URL 时出现烦人的提示,一种可能的解决方案是完全阻止脚本在该网站上运行(如果这不会破坏您的应用程序的功能)。实现此目的的最简单方法如下:
- 按“开始”,键入“Internet 选项”,然后按 Enter。
- 在“安全”选项卡下,单击“受限站点”,然后单击“站点”。在“Internet 选项”中的“安全”选项卡下,有一个标记为“受限站点”的区域,看起来像禁止进入的标志。单击该区域,然后单击下面的“站点”按钮
- 输入要禁用脚本的网站,然后单击“添加”。在“将此网站添加到区域”文本框下,输入要添加的网站(通常不带任何路径后缀),然后单击“添加”。对于本文中的情况,该网站可能是https://daviker.whccs.com 您可以选择之前添加的网站,然后单击“删除”以进一步配置该区域。
单击“关闭”,然后单击“确定”。