簡體   English   中英

不帶斜杠的History.js URL無法正常工作

[英]History.js URL without trailing slash doesn't work correctly

我正在使用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中,它不能以斜杠結尾。 IE9中的URL更改為:

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

似乎將product視為參數,而不是URL的一部分。 如果在URL后面手動添加斜杠,則在IE9中可以正常工作。

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

總結:在基本URL的末尾添加斜杠可解決此問題。 但是我不想添加最后一個斜杠,history.js應該這樣做。 那將如何實現?

編輯

我認為問題出在代碼的這一部分

var basePageUrl = (History.getLocationHref()).replace(/[#\?].*/,'').replace(/[^\/]+$/,function(part,index,string){
  return (/[^\/]$/).test(part) ? '' : part;
}).replace(/\/+$/,'')+'/';

該腳本將此baseURL: 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中,我們不使用尾部斜杠,因此永遠不會使用它,這是一個很好的條件,如果您同時需要兩種可能,則可能必須以其他方式處理它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM