此错误仅出现在新版本的 Chrome 中。它已经在 Mac 上使用 Chrome 版本 29.0.1547.57 和在 Windows 上使用 Chrome 版本 29.0.1547.62 m 进行了测试。
上面的脚本非常简单。这是代码:
<script>
function displayDate() {
console.log('date1', new Date('2013-08-30T14:06:56-04:00'))
setTimeout(function() { displayDate(); }, 1000);
}
displayDate();
</script>
<iframe src="http://jsfiddle.net/wzqgN/2/" width="100%" height="300"></iframe>
加载的第一件事是一个 javascript 函数和对该函数的调用。在函数中,我记录了从 javascriptnew Date()
构造函数返回的值(通过 8 月 30 日)。很简单,正如您在控制台中看到的那样,这是第一次工作。加载 iframe 时会出现问题。iframe 的 src 为http://jsfiddle.net/wzqgN/2/。在这个 iframe jsfiddle 中也没有什么特别的。它有以下代码:
TargetDate = "12/31/2020 5:00 AM";
var dthen = new Date(TargetDate);
正如您在控制台中看到的,第一行输出是:
date1 Fri Aug 30 2013 14:06:56 GMT-0400 (EDT)
但是一旦加载 iframe 并new Date()
调用另一个 iframe,输出就会变为:
date1 Thu Dec 31 2020 05:00:00 GMT-0500 (EST)
我不确定这里发生了什么。我最初的想法是这是一个浏览器错误,但我想在这里询问以确保。在我使用的脚本中,iframe 实际上设置为与运行代码不同的域。这让我更加想知道到底发生了什么。我不了解 iframe 中的脚本(更不用说跨域脚本)如何影响调用它的原始脚本。任何帮助是极大的赞赏。谢谢。