解释我正在尝试解决的问题:
我有一个显示文件列表的网页 (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 中,浏览器会滚动页面,但之前不会重新加载页面,因此用户仍然会在文件列表中看到他删除的文件。
问题
即使我们不在 session 中,您知道如何在返回 session 时重现浏览器的行为吗?
你知道解决这个问题的方法吗,甚至是解决这个问题的另一种方法吗?
谢谢!
我知道我可以使用 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/