Javascript 不带尾随斜杠的History.js URL不';我不能正常工作
我正在使用URL进行更改,无需重新加载。这在带有产品过滤器的网站上使用,过滤器放置在URL中,以便可以与活动过滤器共享URL 网站的URL不以斜杠结尾,因此该网站的有效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中,它在尾部斜杠上
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重定向。。。