javascript - History.js 正在使用哈希标签重写 url

标签 javascript history.js

我已经让 jquery History.js 正常工作,但我想强制使用哈希标签。我尝试过设置 History.options.html4Mode=true但这不起作用。

我需要这个的原因是页面刷新后,浏览器中的 URL 无效。我正在处理一个奇怪的后端并需要这些网址。

当我使用井号标签时会发生什么:

1) 初始状态:http://localhost/<script_path>/<param1>?get&file=<html_file>

2) History.pushSate(null, null, http://<script_path/<parm>?get&file=<html_file>#/<parm>/<parm>?<more parms>

3) History.pushState: http://localhost/<parm>/<parm>?<more parms>之后

编辑:忘记提及,如果我删除哈希值,它会完美地在文件后面附加所有内容。

编辑2:似乎是历史和jquery之间的一些交互。我认为历史正在插入我给出的网址。现在就逐步完成它。

编辑3:已解决。 historyjs 不适用于这个项目 - 我必须使用 location.hash

最佳答案

如果您所做的只是在现有 URL 上添加哈希,则应该设置 location.hash。使用pushState更改pathName而不重新加载页面。

更新:history.js 使用哈希来支持旧版浏览器。因此,将哈希 URL 传递给history.js 根本没有意义(例如,在旧浏览器上会发生什么?)。

我的建议是使用另一个查询字符串参数来保存新的 URL。您将需要对任何类似路径的值进行编码:

var path2 = "/script_path/param1?more=params&even_more=params";
var newUrl = "/script_path/param1?get&file=html_file&path=" + encodeURI( path2 );
History.pushSate(null, null, newUrl);

...或者您可以利用 API(无需编码):

var path2 = "/script_path/param1?more=params&even_more=params";
var newUrl = "/script_path/param1?get&file=html_file";
History.pushSate({path: path2}, null, newUrl);

关于javascript - History.js 正在使用哈希标签重写 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21611926/

相关文章:

javascript - 困惑 - html5 history api 和谷歌爬虫?

javascript - 获取嵌套在另一个 iframe chrome 扩展中的 iframe

javascript - 回调中的递归函数原型(prototype)

javascript - 动态添加跨度标记到字符串的第一个单词

ms-office - 修复由 office.js 删除的 history.pushState 的最佳做法是什么?

javascript - History API 和 History.js 后退按钮问题

javascript - 错误: 'History.Adapter' is null or not an object

javascript - 有没有办法告诉 history.js 状态的发展方向?

java - Selenium JAVA 从 URL 获取参数

javascript - 需要了解NodeJS中ReadWrite的流程