2010-09-02 51 views
14

我有一个网页,使用$(document).ready()来构建接口。然后用户可以进入子页面,并返回到原始页面,他可以按下浏览器的“上一个”按钮或触发history.back();页面中的“返回”按钮。回到原始页面,$(document).ready()未被触发,因此页面缺少信息。

有没有办法自动触发它,就像它是一个“真正的负载”?

谢谢!

编辑

放置在它的警报,该警报POP操作,但东西是在我的界面一样,如果准备事件的某些部分缺失丢失。调查...

编辑2

haha​​hahaha中的document.ready我click一些复选框,这应该是选中。当我“返回”在这个页面上时,他们被检查,所以他们变得没有选中,因为我是click他们。

对不起,这完全是我的坏:(

+0

你在什么浏览器中看到了这个?我只记得Opera后退/前进按钮有这个问题。 – 2010-09-02 15:27:24

+0

我在Chrome上。报告问题的用户在Firefox上。 – Sirber 2010-09-02 16:03:23

+0

请关闭 – Sirber 2010-09-07 18:51:32

回答

7

如果用户使用的Back按钮导航和您所需要的页面全部重新加载,你可以设置页面的NO-CACHE政策。

这样,即使使用Back按钮,浏览器也被迫重新加载服务器页面。

+0

Hrmm..nice答案。没有想到这一点。 – Dutchie432 2010-09-02 15:21:39

+0

我已经使用:header(“Cache-Control:private,no-cache,must-revalidate”);标题(“Pragma:no-cache”); – Sirber 2010-09-02 15:36:57

+0

我添加了'',但是当我按下“返回”时它不会重新加载页面。 – Sirber 2010-09-02 15:40:34

1

非常有趣的问题。当页面获得焦点或类似的东西时,您可能需要重新触发事件/函数。也可能需要保留一个标志变量来跟踪这个“重新触发事件”是有序的。

4

1.)将脚本放在页面的底部。
2.)执行插件和你最后的脚本标签中的东西。
3.)不要使用onDomReady实现,它是多余的。

人们习惯于上传或修改,他们忽略了将脚本放在页面底部而不需要轮询并查看您的html是否可用的事实。

此外,这也是一种很好的做法,因为脚本不会阻止html/css呈现。

不依赖于onDomReady或onLoad实现解决了很多问题。

+1

-1,对于“onload”不起作用的浏览器,您的解决方案不起作用。例如。 FireFox,它不会运行脚本,无论你是将它放在onload还是在页面底部。你甚至测试过吗? – Pacerier 2014-10-12 07:31:34

8

快速解决此问题,请使用“onpageshow”。

window.onpageshow = function(event) { 
    //do something 
}; 
+0

谢谢!其他提议的解决方案在Firefox和Chrome上都无法正常工作,但是这种解决方案可以。 – 2017-05-05 08:30:26

相关问题