用户在JavaScript中导航后,以前的HTML页面会发生什么?

时间:2014-08-29 03:04:05

标签: javascript navigation

假设我有两个HTML页面,我们称之为page1.html和page2.html。然后用户通过调用分配或替换位置对象的方法,从page1.html导航到page2.html。我有一些问题如下:

Q1:page1.html的DOM树会发生什么,当我们从page2.html导航回来时,它会被卸载并重新加载吗?我可以从page2.html引用page1.html的DOM树吗?

Q2:如果我在page1.html中的套接字对象中维护套接字连接,我可以将该套接字对象传递给page2.html吗?我可以在page2.html中监听该套接字对象的事件吗?

问题3:我是否可以拥有page1.html和page2.html的共同对象。我可以做一些事情,比如维护一个计时器来为该对象中的page1.html和page2.html执行常见任务?这个对象就像其他OOP语言中的单例对象。

1 个答案:

答案 0 :(得分:0)

  

Q1:page1.html的DOM树会发生什么,当我们从page2.html导航回来时,它会被卸载并重新加载吗?

或多或少。浏览器缓存以前访问过的页面,并且在使用“后退”导航重新访问时可能不会触发新的加载事件。有些人会将页面保持在以前的状态,有些不会。

  

我可以从page2.html引用page1.html的DOM树吗?

没有。从DOM的角度来看, page1.html 已不复存在。

  

Q2:如果我在page1.html中的套接字对象中维护套接字连接,我可以将该套接字对象传递给page2.html吗?

不,但是当 page1 关闭时,您可以将其序列化,将其发送到服务器,然后将其包含在 page2 中,以便将其恢复( > cf JSON)。

  

我可以在page2.html中侦听该套接字对象的事件吗?

如果它仍然在 page1 中,则不是,但您可以在服务器上模拟该行为。

  

问题3:我是否可以拥有page1.html和page2.html的共同对象。

不使用javascript。但是,如果您将对象传递给 page2 (例如通过序列化或通过服务器的其他方法),那么您可以再次将其传回。

  

我可以做一些事情,比如维护一个计时器来为该对象中的page1.html和page2.html执行常规任务?

不,但你又可以在服务器端做这样的事情。

  

这个对象就像其他OOP语言中的单例对象。

冷却。

如果您描述了您实际要做的事情(即您尝试实现的结果而不是您正在使用的方法),则可能会建议合适的体系结构或设计模式,例如:正如Abhi所暗示的那样,一页申请可能适用。