如何解决有哪些现代浏览器历史记录导航/更改可直接从编辑页面返回列表?
我花了很多年的时间来完善自己的基础知识。抱歉,以前已经被覆盖过。
想象一下,大约是2004年,当时我们有一个典型的商务网络应用程序(包含所有陷阱),其中典型的演示文稿是通过数据表,并且每一行都有一个“编辑”按钮/链接,可进行导航到编辑页面,并通过查询传递数据ID:
<table>
<tr>
<th>Item</th>
<th>Action</th>
<th>Cost</th>
<th>Available</th>
</tr>
<tr>
<td><a href="./edit?id=1">Frobulator</a></td>
<td>Frobs</td>
<td>1234</td>
<td>Yes</td>
</tr>
<tr>
<td><a href="./edit?id=2">Flibbing Driver</a></td>
<td>Flibs</td>
<td>5452</td>
<td>Yes</td>
</tr>
<tr>
<td><a href="./edit?id=3">Fabblication Engine</a></td>
<td>Fabbles</td>
<td>2525</td>
<td>No</td>
</tr>
</table>
编辑页面是包含输入字段和“保存”按钮的表单,在查询中传递行的ID。保存按钮将表单发布到运行 framework du jour 的后端,该后端将表单字段写入数据库,并重新生成相同的表单页面,但带有简单的“成功”消息。
<p><a href="./list">Back to list...</a></p>
<p><!-- placeholder for success message --></p>
<form method="post" action="edit?id=1">
<table>
<tr>
<th><label for="item">Item:</label></th>
<td><input type="text" id="item" name="item" value="Frobulator" /></td>
</tr>
<tr>
<th><label for="action">Action:</label></th>
<td><textarea id="action" name="action">Frobs</textarea></td>
</tr>
<tr>
<th><label for="cost">Cost:</label></th>
<td><input type="text" id="cost" name="cost" value="" /></td>
</tr>
<tr>
<th><label for="available">Available:</label></th>
<td><input type="checkbox" id="available" name="available" checked="checked" /></td>
</tr>
</table>
<p><input type="submit" value="Save" /></p>
</form>
该编辑表单上有一个链接,该链接可导航回到列表(添加JS onbeforeunload
铃铛可能会提示他们是否打算进行中间编辑)。大多数人会忽略它,并尝试在浏览器中使用“后退”按钮。
现在,即使在2004年,我们也不喜欢这样,因为浏览器的 Back 按钮非常痛苦,确切的痛苦很大程度上取决于浏览器。但是,一般而言,每次用户保存时,都需要再单击一次或两次才能返回到列表,而中间点击的作用范围从仅呈现一半保存状态到提交提交一半-保存状态,以显示需要刷新的文档已过期浏览器错误(然后提交某些状态)。
我们今天绕过它,进行了非标准调用以禁用后退按钮,移除后退按钮,移除工具栏,在新的“信息亭”窗口中打开等等,所有这些也很糟糕,但是我们发货并付款了。
这似乎是目前可能已经解决的事情之一,那么,如今这片土地的谎言是什么?
我们都是history.replaceState(null,"",window.location);
还是什么,还是在它变成东西之前就被淘汰了?我的第一个想法是使用异步XHR进行保存,因此实际上并不会重新加载编辑页面,但是按照今天的标准,即使那样也可能有点陈旧(而且无论如何,后端都不会理解它,而无需进行大量重写) )。我想我也必须让列表加载异步,如果我想显示最新数据?
因此,具有某种给定浏览器的 Back 按钮的规范方法(如果有的话)可将您直接返回列表,例如如果更有趣的话,用“浏览器的后退按钮”代替“电话的←按钮”(尽管我认为两者的行为本质上是联系在一起的)。 / p>
如果被迫进行最小的更改,那么在页面,标题或任何其他可合理控制的位置的生成中可能注入什么,以使浏览器正常运行?还有什么对 Forward 特别有效(例如,始终加载最新表格)?
(非常感谢,我对后端框架等方面的细节很了解,但是我想这些都是很容易猜到的,因为有时间限制。我对当今浏览器的当前状态更感兴趣,但是如果现代框架已将其变为非问题,那么我很乐意听到。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。