提问人:azoundria 提问时间:12/22/2018 最后编辑:azoundria 更新时间:12/25/2018 访问量:1269
Chrome:时区偏移是不同的选项卡?
Chrome: Timezone Offset is Different Tab By Tab?
问:
我正在开发一个网络工具,目前遇到了一个问题,在某些选项卡上,我得到的是 UTC 而不是正确的时区偏移量。
即如果我放入控制台:
(新的 Date()).getTimezoneOffset()
我在某些选项卡中得到 0,在其他选项卡中得到 420 的值。甚至加载了完全相同网站的选项卡。
当我使用 getMonth、getDate、getHours 等时......时间也都是 UTC。
我是使用 getTimezoneOffset 的新手,所以我应该期待这种行为吗?根据我正在阅读的内容,我认为这应该是我在 PC 上的本地时间,在此过程中根本没有更改。
Chrome 版本 71.0.3578.80(官方版本)(64 位)
是我做错了什么,还是这真的是我在 Chrome 中发现的错误?我似乎找不到任何此类错误的记录。最接近的是特定于 Android 的。https://bugs.chromium.org/p/chromium/issues/detail?id=520783
但是,我似乎不太可能是第一个发现这样的错误的人,因为有这么多 Chrome 用户。我想确保这绝对是一个错误。
以下是一些附加信息:
navigator.userAgent = Mozilla/5.0 (Windows NT 6.1;Win64的;x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36
工作选项卡:
Intl.DateTimeFormat().resolvedOptions().timeZone = undefined
new Date().toString() = "Mon Dec 24 2018 16:09:55 GMT-0700 (GMT-07:00)"
(new Date()).getTimezoneOffset() = 420
(new Date()).getHours() = 16
失败的选项卡:
Intl.DateTimeFormat().resolvedOptions().timeZone = "Etc/Unknown"
new Date().toString() = "Mon Dec 24 2018 23:09:44 GMT+0000 (GMT)"
(new Date()).getTimezoneOffset() = 0
(new Date()).getHours() = 23
时间正确变化。只有时区是错误的。
它似乎与 URL 相关。例如,如果在新标签页中打开之前失败的网站网址,则会再次失败。
新选项卡似乎没有这个问题,但是一旦我访问“中毒”的 URL,该选项卡上的时区就会受到影响。
访问一个好的 URL 似乎可以解决问题,但是访问 about:blank 没有区别。
例如,如果我打开一个新选项卡,它可以正常工作。然后我访问 stackoverflow.com(目前中毒),然后时区失败。现在我访问 stackexchange.com(无毒),时区很好。然后我去 stackoverflow.com,它又坏了。现在,我转到 about:blank,它仍然坏了。如果我访问 stackexchange.com 它又能起作用了。然后我访问 about:blank,时区仍然正确。
它似乎是特定于域名的。例如,每个 stackoverflow.com 的选项卡都被破坏了,而 stackexchange.com 上的每个问题都有正确的时区。我已经在每个 URL 上测试了至少 7 个页面。
它不会影响隐身模式。例如,如果我使用 Ctrl + Shift + N 打开一个新窗口,然后访问 stackoverflow.com,则时区是正确的。但是,如果我正常打开一个新窗口 Ctrl + N,那么时区仍然被打破。
当我刚开始的时候,我打开了多个选项卡到同一个站点,其中一些可以工作,有些则失败了。如果我没记错的话,首先失败的是最新的选项卡。我可以复制一个工作选项卡并获得另一个具有相同 URL 的选项卡。如果我复制了失败的选项卡,那么我还会得到另一个失败的选项卡。但是,在隐身模式之外,我不再有任何关于失败 URL 的工作选项卡。
答: 暂无答案
下一个:运行下载的脚本
评论
navigator.userAgent
Intl.DateTimeFormat().resolvedOptions().timeZone
new Date().toString()
about:blank
tzutil /g
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones