我如何了解如何在 jQuery AJAX 应用程序中启用后退按钮?

2024-02-11

我查看了这里所有最热门的问题,包括引用最流行插件(如 BBQ 和 jQuery Address)的问题。

然而,我缺少一些东西。我需要从我在这些项目中看到的任何事情中退一步进行指导。他们假设了一些我显然不具备的基本知识,并且我无法推断出示例中的每一行代码实际上在做什么。

我想做四件事:

1) 使前进按钮像在非 AJAX 应用程序中一样工作。
2) 使后退按钮像在非 AJAX 应用程序中一样工作。
3)将url反映在地址栏中,以便可以将其添加为书签。
4)生成深层链接,以便可以抓取AJAX内容。

仅此而已。其他任何事情都是多余的。这是一个 Rails 3.0.4 应用程序,我的链接的 href 均为“#”。单击其中一个链接会激活 application.js 中的一项功能,该功能将当前页面上的 div 中的 html 替换为从 .js.erb 文件呈现的部分创建的更多链接。

我有一个面包屑路径,效果很好,但是使用后退按钮会将您带到您在查看应用程序之前正在查看的任何网站。

所以我的一些问题是:

1) 我的每个链接是否都需要一个唯一的 href 值而不是简单的“#”?
2)我应该每次都替换那个div,还是简单地隐藏它并创建一个新的。如果是这样,每个新的 div 都应该有一个新的 id 吗?
3)由于目前地址栏中的 url 没有改变,并且这些 AJAX 请求都是 POSTS,我是否需要在 Rails 中执行任何操作才能使其响应这些新 URL 之一,这些新 URL 在访问时总是会触发 GET 请求通过浏览器历史记录或后退按钮?

这些是阻碍我解决现有问题的障碍。非常感谢您提供的任何帮助!

EDIT:

我的应用程序不是基于选项卡的。页面加载时并非所有锚点都可用。用户单击链接时会发生以下情况:

1) 隐藏表单中的字段填充有单击的链接的文本值。

2) 隐藏表单被序列化并通过 POST 传递到控制器操作。

3) 控制器操作确定谁发出了请求,找出他们有权访问哪些数据,并使用表单值(现在是参数)来检索对象列表。

4) 这些对象被传递到 .js.erb 视图模板,该模板又使用传递的值渲染部分内容。

5)新链接通过.js.erb模板中的js反弹。

基本上,由于我的数据不是静态的,我需要弄清楚如何使用表单状态重新生成 POST 请求,以便真正“返回”。或者可以以某种方式缓存表单状态和屏幕吗?


1) 我的每个链接是否都需要一个唯一的 href 值而不是简单的“#”?

是的,浏览器仅检测 URL 的变化。如果当前 url 是 foo.com/#,并且用户单击一个链接将他带到 foo.com/#,那么历史记录如何知道他去了任何地方?

因此,您可以在 # 之后添加唯一的文本。 foo.com/#home 和 foo.com/#about 将生成唯一的历史记录条目。然后,当用户为其中一个添加书签时,您可以解析 URL 的后半部分以找出他所在的位置。

2)隐藏和交换div,或者替换?

如果您不是每次都获取每个 div 的内容,您将节省流量开销。如果内容足够小,请将其全部放入页面中,然后隐藏/显示 div。如果内容很大,则仅在他们第一次单击时获取。即我在A上点击B,你应该隐藏A并发出ajax请求来获取B的内容,然后显示B。然后如果我点击返回A,你会显示已经存在的A并隐藏B。不需要当您已经拥有 A 时,再发出另一个服务器请求来获取 A。

3)由于目前地址栏中的 url 没有改变,并且这些 AJAX 请求都是 POSTS,我是否需要在 Rails 中执行任何操作才能使其响应这些新 URL 之一,这些新 URL 在访问时总是会触发 GET 请求通过浏览器历史记录或后退按钮?

新 URL 不会在每次使用后退按钮时触发 GET 请求。 # 风格的便利之处在于 # 之后的任何内容都不会发送到服务器。即,如果您访问 foo.com/bar.html#home,客户端会向 foo.com/bar.html 发出 GET 请求。然后,如果用户转换到 foo.com/bar.html#about,浏览器不会自行发出另一个请求。 # 最初是用来表示指向同一页面内内容的链接(即一个大文档,您可能希望有一个链接到每个章节顶部的索引)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我如何了解如何在 jQuery AJAX 应用程序中启用后退按钮? 的相关文章

随机推荐

  • PDFBox - 获取单词位置(而不仅仅是字符)

    是否可以使用 PDFBox 获取单词的位置 类似于 processTextPosition 似乎 processTextPosition 仅在单个字符上调用 将它们合并为单词的代码是 PDFTextStripper 在 规范化 中 方法的一
  • PHP SQL:如果变量为空则跳过查询部分的方法

    我正在编写一个查询 该查询使用搜索表单中的输入 其中品牌 类型和价格是可选输入字段 SELECT FROM database WHERE brand LIKE brand AND type LIKE type AND price LIKE
  • 配置选项错误:\377\376h

    我正在将我的系统设置为代码提交 但出现以下错误 我点击了以下链接 https docs aws amazon com codecommit latest userguide setting up ssh windows html https
  • 当服务器发送 HTML 而不是图像数据时,是否可以捕获失败的 IMG 加载?

    我有一个网站链接到其他网站上的不同图像 有时这些图像已被删除或域不再存在等 为了不显示这些图像并删除它们 我使用 jQuery 来执行此操作 catch image load errors img error function read o
  • Swift 1.2 中的 @noescape 属性

    Swift 1 2 中有一个新属性 在函数中带有闭包参数 正如文档所述 这表明 参数仅被调用 或作为 noescape 调用中的参数 这意味着它不能 比调用的生命周期更长 据我了解 在此之前 我们可以使用 weak self 不要让闭包有强
  • 如何从 TFS 控制下的项目中删除空文件夹?

    假设我有一个项目 MyLib 在该项目下 我创建了一个文件夹 例如Folder1 该文件夹下没有文件 该项目已连接到 TFS 然后我想删除这个文件夹Folder1 我从上下文菜单中删除了它 并将项目签入 TFS 然后我使用 Team Exp
  • 传递给函数的原始变量名? [复制]

    这个问题在这里已经有答案了 可能的重复 PHP 获取作为参数传递的变量的名称 https stackoverflow com questions 2379166 php get name of variable passed as argu
  • 服务层是否应该接受来自控制器的 DTO 或自定义请求对象?

    正如标题所示 设计服务层时的最佳实践是什么 我确实理解服务层应该始终返回 DTO 以便域 实体 对象保留在服务层中 但是控制器向服务层的输入应该是什么 下面我提出三点我自己的建议 方法一 在此方法中 域对象 Item 保留在服务层内 cla
  • PowerMock 测试通过然后失败

    为什么我的单元测试在独立运行时通过 但在运行多个测试时失败 当我执行单个单元测试时 我的测试将成功模拟并返回预期结果 但是 当我运行所有单元测试时 我之前通过的测试将失败 一次试运行 shouldDoThisAgain 通过 多次测试运行
  • Linq:GroupBy、Sum 和 Count

    我有一系列产品 public class Product public Product public string ProductCode get set public decimal Price get set public string
  • 在Java中生成数百万个不重复的随机数

    我有一个问题 我可以使用什么算法在Java中生成一组2 21随机唯一数字 java中除了math random之外还有另一个生成随机数的库吗 提前致谢 关键问题是你所说的 数字 是什么意思 一般来说 这个问题可以通过 生成一个数字列表 将其
  • 将整个文件夹从 Windows 移动到 Android 模拟器

    是否可以将整个文件夹按原样从 Windows 移动到 Android 模拟器 我确信这个问题的答案存在于某处 但我无法找到它 我可以通过 adb 命令行或通过 ddms 一次移动一个文件 但都没有给我提供移动包含多个文件夹和文件的整个文件夹
  • 表单标签可以包含正文标签吗?

    今天我遇到一些代码 在正文标签开始之前有一个表单标签 我的意思是 表单标签包含在正文标签中 这可能吗 如果是的话 它有什么帮助呢
  • 如何使用 Unix 变量在会话 {bash} 中设置和保留值 [重复]

    这个问题在这里已经有答案了 我需要做这样的事情 设置一个带有默认值的 unix 变量 运行一个 shell 脚本来读取该变量并对其进行处理 处理后可能会也可能不会改变该变量的值 每小时运行此脚本并确保此变量现在的值是上次运行此脚本时设置的值
  • 使用 PHP 获取/读取 Javascript cookie

    我有一个理论问题 我知道你可以使用 javascript 获取 读取 PHP cookie 文档 cookie PHP 中有类似的方法吗 PHP 可以获取 读取在 JavaScript 中创建的 cookie 吗 如果是 那么你怎么能这样做
  • 为什么 ENUM 在 MySQL 中不存储多个值?

    我想用ENUM表中的特征使用MySQL 我创建了一个表tbl test having id作为主键和enum col字段为ENUM数据类型 CREATE TABLE tbl test id INT NOT NULL AUTO INCREME
  • 具有相同工作空间的 2 个 Eclipse 版本

    目前 我的系统上正在运行 Eclipse Ganymede 我想安装 Eclipse Indigo 并将其连接到同一工作区 然后删除 Eclipse Ganymede 这可以正常工作还是我应该重新创建所有项目 理论上它应该有效 在实践中 我
  • Spring Cloud Sleuth 与 OpenTracing

    有没有办法将 Spring Cloud Sleuth 与 OpenTracing 结合使用 我想将 Spring 客户端与 Jaeger 连接 Spring Sleuth 现在与 OpenTracing 兼容 您所要做的就是在类路径中使用
  • 使用 preRemove/postRemove 事件来获取哪些查询可以执行,哪些不能执行

    我在脑海中思考这个问题有一段时间了 现在我需要一些关于 preRemove postRemove 事件的建议 因为我将执行的查询基本上是DELETE但这也应该适用于 prePersist postPersist 和 preUpdate po
  • 我如何了解如何在 jQuery AJAX 应用程序中启用后退按钮?

    我查看了这里所有最热门的问题 包括引用最流行插件 如 BBQ 和 jQuery Address 的问题 然而 我缺少一些东西 我需要从我在这些项目中看到的任何事情中退一步进行指导 他们假设了一些我显然不具备的基本知识 并且我无法推断出示例中