Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript history.js正在使用哈希标记重写URL_Javascript_History.js - Fatal编程技术网

Javascript history.js正在使用哈希标记重写URL

Javascript history.js正在使用哈希标记重写URL,javascript,history.js,Javascript,History.js,我已经让jquery history.js工作了,但我想强制使用哈希标记。我试过设置History.options.html4Mode=true,但这不起作用 我之所以需要这样做,是因为在刷新页面时,浏览器中的url无效。我正在处理一个奇怪的后端,需要这些URL 当我使用散列标记时会发生以下情况: 1) 初始状态:http://localhost//?get&file= 2) History.pushState(null,null,http://如果您所做的只是在现有URL上添加哈希,则应设置l

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

我之所以需要这样做,是因为在刷新页面时,浏览器中的url无效。我正在处理一个奇怪的后端,需要这些URL

当我使用散列标记时会发生以下情况:

1) 初始状态:
http://localhost//?get&file=


2)
History.pushState(null,null,http://如果您所做的只是在现有URL上添加哈希,则应设置
location.hash
。使用pushState更改路径名,而无需重新加载页面

更新: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(无需编码):


谢谢,这确实适用于点击链接,但不能重新加载。我的问题仍然是,为什么history.js除了服务器和散列之外什么都要删除?我已经构建了自己的HTML5插件,它工作得很好,但我需要支持HTML4浏览器。如果我能弄明白它,这个插件似乎是一个不错的选择O.oThanks很多人。有趣的是它在较旧的浏览器(ie8/9/10)(也许你是这么说的)。我真的很感谢你的帮助。我明天会做这些更改。如果我有代表,我会投票。我已将此标记为已解决。你给了我一大堆帮助,我应该可以从这里开始。天哪,我太慢了-出于我的目的,我只需要更改哈希。谢谢你的帮助:)
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);