Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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,我正在使用URL进行更改,无需重新加载。这在带有产品过滤器的网站上使用,过滤器放置在URL中,以便可以与活动过滤器共享URL 网站的URL不以斜杠结尾,因此该网站的有效URL为: www.mysite.com/products 此URL将向您显示一个列表,其中包含您能够应用过滤器的所有产品。应用过滤器应将URL更改为: www.mysite.com/products/?filter1=2,4,6&filter2=4 这适用于FireFox、Chrome和IE11。然而,在IE9中,它在尾部斜杠上

我正在使用URL进行更改,无需重新加载。这在带有产品过滤器的网站上使用,过滤器放置在URL中,以便可以与活动过滤器共享URL

网站的URL不以斜杠结尾,因此该网站的有效URL为:
www.mysite.com/products

此URL将向您显示一个列表,其中包含您能够应用过滤器的所有产品。应用过滤器应将URL更改为:

www.mysite.com/products/?filter1=2,4,6&filter2=4

这适用于FireFox、Chrome和IE11。然而,在IE9中,它在尾部斜杠上失败。IE9中的URL更改为:

www.mysite.com/products#products?filter1=2,4,6&filter2=4

它似乎将
product
视为一个参数,而不是URL的一部分。如果我在URL后面手动添加一个尾随斜杠,它在IE9中可以正常工作

基本URL:
www.mysite.com/products/
在使用history.js时,即使在IE9中,也将
www.mysite.com/products/?filter1=2,4,6&filter2=4

因此,总结如下: 在基本URL的末尾添加一个尾随斜杠可以解决这个问题。但我不想添加最后一个尾随斜杠,history.js应该这样做。这将如何实现

编辑

我认为问题出在代码的这一部分,th

var basePageUrl = (History.getLocationHref()).replace(/[#\?].*/,'').replace(/[^\/]+$/,function(part,index,string){
  return (/[^\/]$/).test(part) ? '' : part;
}).replace(/\/+$/,'')+'/';
此脚本将此基本URL转换为:
www.mysite.com/products
进入:
www.mysite.com


我对正则表达式不是很在行,因此实际上不知道正则表达式在本例中的作用。

在History.getPageUrl函数中,我添加了这一行

//Yoni's hack to not have trailing slash
        if (pageUrl.substr(pageUrl.length - 1, 1) == '/') {
            pageUrl = pageUrl.substr(0, pageUrl.length - 1);
        }
就在

return pageUrl;

在Symfony 2中,我们没有使用尾随斜杠,因此从来没有使用过尾随斜杠,这是一个很好的条件,如果您需要这两种可能性,您必须以另一种方式处理它。这似乎是一个bug,因为第二次替换乍一看毫无意义。此时,我更改了url以解决问题。需要写一些301重定向。。。