php - 通过重新加载第一页然后再次滚动回来使浏览器返回

标签 php javascript session header browser-history

解释我正在尝试解决的问题:

我有一个显示文件列表的网页 (file_list.php),每个文件旁边都有一个用于删除它的按钮。当用户按下某个文件名附近的 DELETE 按钮时,浏览器会转到名为 delete_file.php 的脚本,该脚本会删除该文件,然后告诉浏览器返回到 file_list.php

delete_file.php 使用一个简单的 header("Location: file_list.php"); 返回到 file_list.php

当浏览器返回到file_list.php时,它重新加载页面,但不会再次将其滚动回用户之前所在的位置。因此,假设用户滚动了文件列表并删除了最后一个文件,当浏览器再次显示页面 file_list.php 时,它不会再次滚动到页面底部。



我想出的解决方法:

我发现了一种奇怪的方法来解决这个问题,基本上而不是在 delete_file.php 中使用 header("Location: file_list.php");只需使用 JavaScript 调用 window.history.go(-1)

用户处于 session 中时,此解决方法非常有效(只需使用 PHP session_start 函数):浏览器重新加载 file_list.php 页面,然后也滚动它回到之前的位置。 但是,如果用户不在 session 中,浏览器会滚动页面,但之前不会重新加载页面,因此用户仍然会在文件列表中看到他删除的文件。



问题

  1. 即使我们不在 session 中,您知道如何在返回 session 时重现浏览器的行为吗?

  2. 你知道解决这个问题的方法吗,甚至是解决这个问题的另一种方法吗?

谢谢!

我知道我可以使用 AJAX 来删除该文件,这样我就不必每次都去 delete_file.php,但这不是答案

最佳答案

你可以发出 anchor :

<a name="anchor1"/>filename_this
<a name="anchor2"/>filename_that

要删除filename_this,请传递删除页面filename_this 和anchor1。然后删除页面重定向到 file_list.php#anchor1

请注意, anchor 名称不应映射到文件名。这样,当您删除第五个文件时, anchor 位于"new"第五个文件附近(旧文件原来所在的位置)。

关于php - 通过重新加载第一页然后再次滚动回来使浏览器返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2945596/

相关文章:

PHP session 在页面之间丢失数据

session - session 超时后的 Backbone Collection.fetch()

php - Laravel + Ratchet : Pushing notifications to specific clients

php - 类似 MYSQL 的 2 个表搜索

javascript - vue.js中获取数据属性的方法

javascript - 使用 Mechanize 将 HTML 注入(inject)页面

php - 带有 session /cookie 的 CORS 请求

php - preg_match中的 `e`修饰符是什么意思?

php - 如何从 javascript 函数执行 php?

javascript - 获取完整数据集,使用带分页的 YUI 数据表排序