问题标签 [html5-history]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 历史 API 和域级 URL
我在 MyDomain.com 上有两个页面。从 MyDomain.com/ 和 MyDomain.com/Foo/Bar 可见的索引视图。每个视图都有一个 ajax 调用,每个视图都使用 HTML5 History API 推送状态。
有产生问题的步骤:
- 从 MyDomain.com/ 开始(按预期工作。)
- 单击指向 MyDomain.com/Foo/Bar/ 的 ajax 链接(按预期工作。)
- 单击指向 MyDomain.com/ 的 ajax 链接(按预期工作。)
- 单击指向 MyDomain.com/Foo/Bar/ 的 ajax 链接
现在 URL 显示为 MyDomain.com/ Foo/Foo /Bar/
我不想要 Foo Foo 酒吧。
我目前的解决方法是在 URL 的前面添加“../../../”,但这并不优雅,也不是万无一失的。另一种选择是计算目录级别的正则表达式。
有没有更好的方法来使用 History API 获取绝对 URL?
javascript - 历史 pushState 和滚动位置
当用户使用 HTML5 popstate 处理程序导航回浏览器历史记录时,我正在尝试检索滚动位置。
这是我所拥有的:
当我返回时,我无法检索 stateData 的值。
我认为这是因为 popstate 正在检索初始页面加载的值,而不是我在单击超链接时推送到历史记录的状态。
我怎么能在导航回来时获得滚动位置?
javascript - 在这种情况下如何跳转到 html5-history 推送的上一个 url?
我正在使用 html5-history api,我这样做是为了更改 url:
那么,最终的结果将是:
然后,如果我按浏览器的上一个铺面,它会将我重定向到http://myweb.com/
,而不是上一个历史 url push: http://myweb.com/hello/
。
history.go(-1)
当按下浏览器的后退按钮或类似的东西来解决这个问题时,有一种方法可以调用吗?任何帮助、提示或建议将不胜感激,如果您需要更多信息,请告诉我,我将编辑帖子。
html - 在 jQuery 地址插件书签页面上自动加载 div 内的内容
我正在使用 jquery.address 插件来更新浏览器的地址栏,同时通过 ajax 加载内容。一切正常,除了我不知道如何在用户尝试访问诸如“domain.com/about-us”之类的书签页面时自动将 event.value 或 event.path 加载到我用来加载内容的 DIV 中,在这种情况下页面会加载,但“关于我们”的内容不会加载到 DIV 中。我错过了什么?这是我的代码:
JS:
HTML:
.ht 访问:
谢谢!
javascript - Firefox 处理 window.onpopstate 的方式是否与 Chrome 和 Safari 不同?
我一直在尝试让单页应用程序在 Chrome、Safari 和 Firefox 上运行,但 Firefox 似乎根本没有执行 window.onpopstate。
我有 .htaccess 将所有请求路由回 index.html,因此当客户端发出请求时,浏览器将 url 存储为 javascript 变量并通过 index.html 中的 js 传递
在 Firefox 中运行时,该变量不会传递到 index.html 页面。任何人都对如何深入研究这个问题有解决方案或任何建议?
javascript - 基于历史的自定义后退按钮
在我的单页网络应用程序中,我希望在某些页面上有一个后退按钮,可以将用户带回到浏览器历史记录中的特定点:不一定是上一页。
请注意,我不是在谈论浏览器的后退按钮,它应该像往常一样工作。
用例
例如,考虑 gmail 网络应用程序。有一个文件夹视图,可能带有搜索过滤器或其他参数,然后是一个显示单个消息的消息视图。在消息视图中,有一个后退按钮不会将您带到上一页:即使您单击了几条消息,后退按钮也会将您带回到原来的文件夹视图,然后再单击任何的消息。
在 gmail 的情况下,这是通过简单地在 URL 末尾编码先前的状态来实现的。例如,如果您通过搜索获得此消息,它将是:
从这里,应用程序知道后退按钮应该指向页面:
然而,在我的应用程序中,有太多的状态无法将其全部编码到 URL 中。不是两个视图(文件夹 + 消息),而是三个视图,我们称它们为 A、B 和详细信息,其中 A 和 B 都有大量可能的过滤器和编码在 URL 中的选项,我想在何时保留这些过滤器和选项例如,从 B 到 A 或从详细信息到 B。在详细信息页面的 URL 中对 A、B 和详细信息的所有参数进行编码会使 URL 非常笨拙。
执行
我认为这可以使用 html5 历史 API 轻松实现。但是,据我所知,历史 API 不支持读取历史中的 URL:您只能盲目地向后或向前。
history.js 提供对过去状态的访问,如相关问题中所述:
History API:Javascript Pushstate,获取上一个 URL
但是,我使用的 angularjs 不适用于 history.js,因为它直接与 history api 对话,而不是通过 history.js,因此由 angular $location 服务引起的转换状态不会显示在历史记录中.js 的历史对象。
看来我需要执行以下操作之一:
- 让 history.js 与 angular 配合得很好
- 在我自己的代码中重新实现 history.js 功能的一个子集
我还考虑使用 document.referrer 来查看历史中的前一个值,但这不起作用,因为在单页应用程序中导航时它没有设置。
angularjs - 对于 AngularJS 网络应用程序:当使用后退按钮导航回网页时,网页不会记住它们的最后滚动位置。为什么?怎么修?
在浏览 AngularJS 的开发人员指南时,我注意到在使用后退按钮导航回页面时,我没有返回到上一个滚动位置。相反,我直接回到顶部。由于开发者指南是用 AngularJS 构建的,我担心当我用 AngularJS 构建自己的 web 应用程序时,如果他们有同样的体验,它会惹恼我的用户。为什么会发生这种情况,如何解决?我是否需要以某种方式使用 HTML5 的历史 API?
转到开发人员指南并亲自查看此行为:http: //docs.angularjs.org/guide/directive
testing - 在 ember 中访问浏览历史记录
我有以下两条路径可以在我的应用程序中编辑对象( node ):
- 列出节点 -> 单击编辑图标
- 列出节点 -> 选择节点 -> 单击编辑按钮
我可以选择取消编辑。当我取消时,我希望路由器(控制器?)回到正确的位置。也就是说,如果我来自节点列表,我想取消返回“节点列表”(#nodes
)。如果我来自节点视图,我想取消返回节点视图 ( #nodes/show/node-id
)。目前这是我的实现NodesEditController
:
如您所见,cancel
动作的路线是固定的(nodes.show
)。但在第一种情况下,我想做this.transitionToRoute('nodes.index');
. 所以我的cancel
方法一定是这样的:
如何实施some_test
?我可以测试什么来了解我是如何到达当前路线的?
javascript - 为什么 window.history.back() 会跳回两个状态?
我一直在玩 window.history.pushState 和 onpopstate 但在我看来,按下返回会跳回两个状态,跳过一个。
History.js 似乎表现出相同的行为。请参阅“直接使用 History.js”部分中的https://github.com/browserstate/history.js 。它在第二个 back() 中从状态 3 跳转到状态 1。
那么为什么它有这种行为或者我错过了什么?
ember.js - 如何将 hashbang url 更改为历史 API
我正在使用 ember1.0-rc3,我想将 hashbang url 更改为正常的 url 格式(即 www.site.com/admin#/page1 到 www.site.com/admin/page1)。为了做到这一点更改,我在应用路由器中使用位置:“历史”。
但是当我重新加载页面或为页面添加书签时不起作用,它只会重定向到主页。我希望在我的应用程序中重新加载选项和书签,而不更改 .htaccess 文件中的重定向 URL。有什么办法吗?谢谢提前