Javascript &引用;Can';t从释放的脚本执行代码";在IE9中调用date.getHours()时
我将日期对象传递给一个调用Javascript &引用;Can';t从释放的脚本执行代码";在IE9中调用date.getHours()时,javascript,internet-explorer-9,Javascript,Internet Explorer 9,我将日期对象传递给一个调用Date.getHours()或任何其他方法(如Date.getFullYear())的方法,它抛出一个错误“无法从释放的脚本执行代码”。IE9似乎不支持日期选择器使用的日期对象 我是javascript/通用编码新手,有一个问题似乎只发生在IE9中。我警告大家这一点,因为我可能用了完全错误的方法来解决它 为了解决这个问题,我尝试了各种不同的方法,例如: if (date.getHours()=="undefined") { var localDate = ne
Date.getHours()
或任何其他方法(如Date.getFullYear()
)的方法,它抛出一个错误“无法从释放的脚本执行代码”
。IE9似乎不支持日期选择器使用的日期对象
我是javascript/通用编码新手,有一个问题似乎只发生在IE9中。我警告大家这一点,因为我可能用了完全错误的方法来解决它
为了解决这个问题,我尝试了各种不同的方法,例如:
if (date.getHours()=="undefined") {
var localDate = new Date(date);
var hours = localDate.getHours();
// etc
}
我现在有了一个解决方案(它可能不是最好的,但它很管用)并将在下面发布,但是我想知道是否有其他人遇到过同样的问题,以及他们是如何解决的?根据我的经验,当你得到的日期对象在不同的窗口中构造时,问题就会发生,这样,因为它的建设,其他窗口已关闭或重新加载了一个新的页面 解决方案是以某种字符串形式在窗口间发送对象,根据需要在目标上下文中重新构造它们
(当然不仅仅是日期实例;它是任何对象类型。如果我记得的话,原语没有问题。)我的解决方案如下 我创建了一个新方法:
function getValidDate(date) {
try {
date.getHours();
return date;
} catch (e) {
return new Date(date);
}
}
然后,我用受原始问题影响的任何方法调用了getValidDate()
:
date = getValidDate(date);
正如所描述的那样,我只是返回了一个新的日期,该日期由传递到方法中的原始日期填充。然后我可以在这个新日期调用任何方法,比如getHours()
,getFullYear()
等等
我是编程界的新手,所以尽管这看起来很简单,但我希望这对其他类似情况的人有帮助。你读过吗?谢谢,这解释了很多!我还不能发布我的解决方案,因为我是一个新用户,所以必须等待8个小时,但我在一个新方法中使用了一个try-catch块,尝试调用date.gethours(),然后我完全做到了这一点;我用传入的日期重建了一个新的日期对象。这意味着我不需要担心用户使用的浏览器。这是实现解决方案的正确方法吗?当然可以。或者您可以在原始日期调用
.getTime()
,并使用它在接收窗口上下文中构造一个新的日期。