如果javascript修改了页面A中的DOM,则用户导航到页面B,然后点击返回按钮返回页面A.对页面A的DOM的所有修改都将丢失,并且向用户显示最初从服务器检索的版本.
它在stackoverflow,reddit和许多其他流行的网站上以这种方式工作.(尝试在此问题中添加测试评论,然后导航到不同的页面并点击返回按钮返回 - 您的评论将"消失")
这是有道理的,但一些网站(apple.com,basecamphq.com等)在某种程度上迫使浏览器为用户提供最新的页面状态.(转到http://www.apple.com/ca/search/?q=ipod,单击顶部的"下载"链接,然后单击"返回"按钮 - 将保留所有DOM更新)
来自哪里的不一致?
我为当地社区大学做一些小编程和网络工作.这项工作包括维护一个非常庞大且灵魂破坏的网站,其中包括VBScript,javascript,Dreamweaver产生的混乱和一系列附加组件,各种各样的conmen已经说服他们多年来购买.
几天前,我接到一个电话"网站正在锁定使用Safari的人!" 好的,第一步下载Safari(v3.1.2),第二步冲浪到网站.一切似乎都很好.
长话短说我终于解决了这个问题,它与Safari的后退按钮有关.该网站使用了一个花式裤子javascript菜单,可以在我尝试过的每个浏览器中使用,包括Safari,这是第一次.但是在Safari中,如果您按下页面上的链接然后点击后退按钮,则菜单不再有效.
我做了一个简化的网页来说明原理.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head><title>Safari Back Button Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body onload="alert('Hello');">
<a href="http://www.codinghorror.com">Coding Horror</a>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
加载页面,您会看到警告框.然后按照页面上的链接点击后退按钮.在IE和Firefox中,您再次看到警告框,在Safari中您不会.
经过一番激烈的谷歌搜索,我发现其他人有类似的问题,但没有真正令人满意的答案.所以我的问题是,在用户点击后退按钮之后,如何在其他浏览器中使我的页面在Safari中以相同的方式工作?
如果这是一个愚蠢的问题请温柔,javascript对我来说有点新鲜.
我尝试实现异步加载Facebook登录按钮,但按钮在45秒后消失.
这是我在错误控制台中收到的消息:
FB:login_button无法在45秒内重新调整大小
有人能给我一个解决这个bug的方法吗?