这可能是一个很长的镜头,但有其他人看到Edge在Windows 10上从最新版本的Edge(41.16299.248.0)中的控制台运行new Intl.DateTimeFormat().format()
时抛出一般错误?到目前为止,我只能在一个特定用户的机器上重现。
它只会出现SCRIPT65535
错误。
答案 0 :(得分:1)
因此,我最终找到了原因,并提出了解决方法。 Windows论坛上的用户发布了此相关问题,并发现了Edge用来格式化日期的Windows系统dll中的根本原因:https://social.msdn.microsoft.com/Forums/windowsapps/en-US/dce1f04c-8c06-4398-93a5-127393a428dd/uwpccalendarchangetimezone-throws-eunexpected?forum=wpdevelop
从本质上讲,这是由Windows更新期间应删除的注册表值引起的,但在某些系统上它仍然存在,因此该函数将引发异常。为了验证是同一原因,我在受影响的系统上删除了该注册表值(这是一个过时的时区),并解决了该问题:
HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion\Time Zones\Armenian Standard Time
很明显,我不想强迫用户更新其注册表,因此当我的应用启动时,我会填充Intl
API的该部分,如果该API在该浏览器中已损坏:
// Only polyfill DateTimeFormat if the call fails
try {
new Intl.DateTimeFormat().format();
} catch (error) {
Object.defineProperty(Intl, 'DateTimeFormat', {
value: DateTimeFormatPolyfill,
});
}