- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个用户可以修改的页面。所有修改都使用 JQuery 执行,并发送到服务器,以便完全重新加载也会生成修改后的页面。
这在 Windows 上的 Firefox 11/Chrome 中运行良好:即使用户导航到其他地方然后使用“返回”按钮,他们也会获得包含最新编辑的页面。
但是,如果我现在将 Google map 嵌入到页面中,后退按钮将停止工作:它会将用户带到页面上的所有编辑之前的状态。除了在浏览器的缓存中,这个页面甚至不再存在,但它被显示出来。
我整理了一个 简单的测试用例 here这表明这种行为。
是什么赋予了?我怎样才能解决这个问题?完美的解决方案只是允许浏览器返回而不像通常那样重新加载页面。
附言显然,“工作”示例实际上也不适用于 OSX 上的 Chrome。如何解决浏览器坚持返回页面的陈旧版本的问题?
错误报告 描述此行为:Firefox
赏金 :Windows 上的 Firefox 和 Chrome 表现出这两种行为(在一种情况下返回到修改后的 DOM,但在另一种情况下未修改)。是否有描述浏览器应该做什么的规范?是否有提交的错误以一种或另一种方式改变这种情况?这个问题有一个我可以用谷歌搜索的通用名称吗?
我正在考虑一种解决方案,即通过 JavaScript 更新隐藏元素,然后检查更新是否仍然存在。如果是这样,“返回”按钮将恢复最新的 DOM,无需执行任何其他操作。如果没有,浏览器会恢复过时的 DOM,我可以强制重新加载页面,尽管如此令人不快。也欢迎对此方法提出任何意见。
备注 :真正的网站有更多的可编辑控件,其中之一是自由格式的文本区域。即使用户刚刚添加了几段文本,我也希望所提出的解决方案能够工作。那种东西不能加在#
后面的URL后面, 例如。
最佳答案
将 Google map 嵌入页面会禁用 bfcache(我将使用 mozilla 术语表示缺乏标准缓存),因为 map 页面加载在 <iframe>
中。使用 unload
听众。
在 Firefox 中快速返回导航页面没有被缓存的可能原因列在 MDN 上:Using Firefox 1.5 caching .您的问题被列为“顶级页面包含不可缓存的框架”,这令人困惑,我稍后会尝试澄清。 (其他浏览器可能使用类似的启发式方法,因为开发这些规则是为了避免破坏现有内容 - 另请参阅 this answer ,它有一些链接。)
解决这个问题的正确方法是与谷歌的某个人交 friend ,然后唠叨他们,直到他们删除 onunload
至少来自 map 的嵌入页面的听众。
一般来说,您永远不应该依赖 bfcache 对特定页面工作或不工作。这只是对常见情况的优化。由于它是一种优化,因此可以禁用它,例如当系统内存不足时。如果用户在返回之前重新启动浏览器,或者关闭选项卡并选择“撤消关闭选项卡”,它也将不起作用,如您在错误中所述。
您应该从 JS 恢复页面的状态或将页面标记为不可缓存(使用 HTTP header )。当然,前者会带来更好的用户体验。 @Adam Gent 的建议看起来是正确的,我必须检查他所指的 Firefox 问题。
bfcache 以这种方式工作的原因是:
onunload
页面中的处理程序基于用户可能返回到页面并且他们想要缓存它,作者会提示。 关于html - 如何将 AJAXy 页面更新与后退按钮混合在一起,以便在用户返回时更新仍然存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9775738/
我正在尝试使用 tkinter 创建一个类似点击器的游戏作为练习。我对 tkinter 很陌生,所以如果问题非常基本,我深表歉意。我设置了一个按钮来添加点击次数,并且我还尝试设置自动点击功能。我的代码
我想以特定方式更新表 A 中的第 1 列:当列中的第三个字符是“_”时,我想插入前 2 个字符,如果第三个字符还有其他任何内容,我想保留它是。 例子: |col1|
我用 View 模型组装了一个简单的登录 fragment 。这是 fragment : class LoginFragment : Fragment() { companion object {
是否可以在 mySQL 中的创建表语句中编写更新语句?假设我们有两个不同的表。当我在一个表上插入某些内容时,我想更改另一表中的值。这在 mySQL 中可能吗 最佳答案 需要更多规范。 如果您有 2 个
我组合了一个简单的发布/订阅模式,以允许动态实例化和运行多个 JavaFX 类。这些类中的每一个(“订阅者”)都旨在可视化来自具有“发布者”角色的模型(在模型/ View / Controller 意
我正在使用 pygame 并在主循环的每个循环中更新到屏幕。我不明白的是,在我添加一个 for 循环查找事件之前,什么都不会更新,然后突然所有更新都发生了。这是为什么? def run(self
我是 React 的初学者;我知道 setState 是异步的,但我不明白为什么在示例笔中下方框下方的刷新不会立即完成,而仅在输入第二个字符后才更新。 Codepen:(已更新以链接到正确的笔) ht
我在 Java 程序中有两个选项卡。一个用于添加股票,另一个用于列出我创建的股票。当我在第二个选项卡中添加新项目时,我试图设法更新第一个选项卡中的项目列表。有任何想法吗? 我希望第一个选项卡显示我在第
我有一个 Activity A。加载 A 后,单击 A 中的按钮会在 A 的主页布局上添加 fragment F。现在一旦进入 F,如果我正在调用 getActivity().getSupportFr
下面提供的这段代码中的 friend 们,我想在从播放 Intent 恢复时刷新我的 TextView 。但是每当我尝试在 OnCreate 之外但在我的主类中定义我的 textview 时(在 st
我是 Postgres 的新手。我正在尝试使用 java/postgres jdbc 执行以下代码(适用于 MySQL): for (int i = 0; i < arr.size(); i++) {
目前,我有一个更新函数,可以更新一行,但如果我将其中一个框留空,而不是不更改该值,则该值将被删除。如果我只需要更新其中一个值,我想更新该值并将其他框留空。这可能吗? 目前我的代码是这样的。 最佳答案
我正在编写 JavaScript,它正在为一个项目计数到一定数量。数量可能在 100,000 左右,完成处理大约需要 10-15 秒。我希望脚本在用户调用页面时立即运行,并在脚本完成时进行重定向。是否
每当具有不同输入 ID 的另一个 selectInput 的值发生变化时,我需要更改一个具有自己输入 ID 的 selectInput 的值。 在 javascript 中,这将是 onchage,但
我正在尝试弄清楚如何在将视频上传到服务器时更新我的 UIProgressView。该视频是用户选择的视频,这是我上传到我的服务器的代码: NSMutableArray *array = [[NSM
我想在单击 h:commandButton 时更新 id="contents"的 div,但复杂的部分是 h:commandButton 位于 c:forEach Click Me
我目前正在构建一个读取数组并将其显示在 TableView 上的 UITableView。我不断地添加到数组中,我希望在 View 上有一个按钮,一旦单击它就会更新 UITableView。 如何从我
我在 StructuredProperty 中有一个 ComputedProperty,它在首次创建对象时不会更新。 当我创建对象时 address_components_ascii 没有被保存。该字
我知道 SCNPhysicsBody 在节点缩放时不会缩放,但我还没有找到解决此问题的好方法。我想缩放节点,然后在缩放后将 SCNPhysicsBody 更新为节点。 let box = SCNBox
我在自定义 UITableViewCell 中有一个 UILabel,当设备旋转时,它会调整大小。旋转后需要重新计算此标签中的文本,因为我要将其缩小到适当大小并在末尾附加一些文本。 例如数据模型有:“
我是一名优秀的程序员,十分优秀!