当前位置: 首页 > 面试题库 >

Windows 7的IE11中的JavaScript localStorage对象损坏

郏景澄
2023-03-14
问题内容

localStorageInternet Explorer 11(Windows 7构建)中的对象包含某些函数的字符串表示形式,而不是您期望的本机调用。

这只能用原始的JavaScript破坏,而JSFiddle这样的网站对此代码没有问题,但是我怀疑是因为有localStorage适当的polyfill对其进行了纠正。

以以下HTML页面代码为例:

<!DOCTYPE html>
<script>
  localStorage.setItem('test', '12345');
  alert(localStorage.getItem('test'));
  localStorage.clear();
</script>

这在我安装的所有浏览器(IE11除外)中都可以很好地工作。第一行’ SCRIPT5002:预期功能 ‘ 发生错误。

看一下该setItem函数在IE开发人员工具控制台中实际上是什么类型,指出它是一个字符串…?

    typeof localStorage.setItem === 'string' // true

打印出的字符串将setItem显示以下内容:

"function() {
var result;
callBeforeHooks(hookSite, this, arguments);
try {
result = func.apply(this, arguments);
} catch (e) {
callExceptHooks(hookSite, this, arguments, e);
throw e;
} finally {
callAfterHooks(hookSite, this, arguments, result);
}
return result;
}"

奇怪的是,并非所有函数都已被字符串替换,例如,相应的getItem函数确实是一个函数,并且可以按预期工作。

    typeof localStorage.getItem === 'function' // true

将文档模式(仿真)更改为10或9仍无法解决问题,并且都导致相同的错误。将文档模式更改为8会出现以下错误:“ 对象不支持此属性或方法”,这是预期的,因为IE8不支持localStorage

其他人在Windows 7上的localStorage对象看来“损坏/损坏”的IE11是否有相同的问题?


问题答案:

原来这是Windows 7 SP1的IE11基本版本(11.0.9600.16428)中的问题。

后安装补丁来更新11.0.9600.16476(更新版11.0.2-KB2898785)问题得到解决。可以在修补程序下载页面的底部找到指向其他Windows版本(32位等)的链接。



 类似资料:
  • 出于性能考虑,我们尝试重新使用相同的KieBase对象来为针对相同规则集的每个规则调用生成新的KieSession。Everthingyth运行良好,直到一段时间后,突然,从缓存的kieBase新创建的kieSession停止触发它应该触发的规则。 但是一旦我们摆脱了缓存的kieBase并重新创建了一个新的kieBase和新的kieSession,它就会再次开始工作。 我们的理解是,kieBase

  • 问题内容: 在IE 11中,ToLocaleDateString()获得了有趣的结果。返回的字符串在浏览器中看起来不错,例如“ 1/28/2014 11:00:46 AM”,但是如果我将该值复制并粘贴到纯文本编辑器中,它看起来像这样:“?1?/? 28?/?2014?11?:?00?:?46??AM”。 有趣的是,如果我将文本粘贴到Microsoft产品中,看起来还不错…问题是,如果您尝试以编程方

  • > (仅对于IE 11,您将需要在目标计算机上设置一个注册表项,以便驱动程序可以保持与它创建的Internet Explorer实例的连接。对于32位Windows安装,您必须在注册表编辑器中检查的项是HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\Feature_BFCache。 对于64位W

  • 本文向大家介绍DBMS中的无损和有损分解,包括了DBMS中的无损和有损分解的使用技巧和注意事项,需要的朋友参考一下 通过将表分为多个表,DBMS中的分解可以消除数据库中的冗余,异常和不一致。 以下是类型- 无损分解 如果可以使用Joins从分解后的表中重建关系R,则分解是无损的。这是首选。分解后,信息不会因关系而丢失。联接将导致相同的原始关系。 让我们看一个例子- <EmpInfo> Emp_ID

  • 问题内容: 我正在自学Java,这本书中的其中一项复习练习要求“对象”和“对象变量”之间的区别。 我知道什么是对象(类的特定实例),但是我似乎无法在书中的任何地方(无答案部分)或在互联网上找到术语“对象变量”。 有人知道这个名词的意思吗? 问题答案: 它是“实例变量”的同义词: 显然,该术语并不常用,最好坚持使用“实例变量”以避免任何潜在的歧义。

  • 本文向大家介绍JavaScript中的Array 对象(数组对象),包括了JavaScript中的Array 对象(数组对象)的使用技巧和注意事项,需要的朋友参考一下  1、创建Array对象方法: --->var arr = [1,2,3];//简单的定义方法 此时可以知道 此时可以知道: 2、Array对象属性 Array常见的属性有三个:constructor、length和prototyp