窗口对象和属性持久化
Window object and properties persistance
我知道Window对象是浏览器(选项卡)的"主"对象,它附加了所有内容-核心方法,全局声明的变量,函数,甚至DOM。它高于一切。
当我去一个不同的页面在同一浏览器窗口(选项卡),我认为窗口对象保持不变(只有dom改变),因为历史和其他东西是可访问的。我不太明白的是,为什么附加到窗口对象的全局变量(即使使用window.myvariable
)不持久。
对我来说,唯一可能的解释是因为它是这样做的。如果发生了什么,是否"非核心"窗口元素(由代码设置的方法和变量)被擦除;是每个新的页面访问窗口对象的一个新的实例(听起来最明显的方式对我来说)还是…?
我找不到关于这个问题的任何有用的信息,通常人们只知道你不能在页面之间传递变量(除了cookie, web存储,窗口标题),但是为什么/如何(机制,而不是原因)这种情况很难得到。谢谢。
浏览器中的每个选项卡都是独立的窗口对象,并且有自己的全局变量集,因此您共享窗口对象的假设是不正确的。你的javascript不是,也不应该被允许在标签之间看到。如果这是可能的,那么想象一下你打开一个网页,在标签之间嗅探数据和其他信息。你的标签不允许做你的浏览历史嗅探(他们可以得到历史的长度,虽然,我认为,)。
如何使浏览器是安全的(如果你是浏览器的供应商)?
-
首先,它可以选择不支持某些功能,例如任意读取客户端文件系统
-
第二,限制他们提供的一些功能
你可能想看看同源策略和某些放松的限制,这可能会有所帮助。
所有全局JavaScript变量,函数&对象自动成为窗口对象的成员,只要新页面不在同一浏览器窗口(选项卡)中加载/访问,它们就会被持久化。
无论何时加载新页面,或者我们在同一个选项卡内重定向到新页面,那么这些函数和变量的作用域从以前的文档结束,并从窗口对象中删除。全局声明的变量和函数为新加载的文档(从脚本与文档关联)被附加到窗口对象
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- AngularJS-使用'true'属性
- 可以't使用JavaScript获取width属性
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- Javascript AMD模式混淆-持久化属性值
- Mongo, js - 忽略属性以持久化
- JavaScript使用自定义属性作为持久化机制
- 在绑定属性更改时持久化模型
- 将属性设置为选择不持久化
- 窗口对象和属性持久化