Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;Can';t从释放的脚本执行代码";在IE9中调用date.getHours()时_Javascript_Internet Explorer 9 - Fatal编程技术网

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()
,并使用它在接收窗口上下文中构造一个新的日期。