我已经让 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/