如何从window.location.pathname中删除尾部斜杠

时间:2015-07-02 13:00:33

标签: javascript iis-6 location-href

我有以下代码允许我在我的网站的桌面版和移动版之间切换,

<script type="text/javascript">
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera 
Mini/i.test(navigator.userAgent) ) {
window.location = "http://m.mysite.co.uk";
}
</script>

我最近意识到所有这一切都是将每个人都发送到网站的主页。我挖了一下,发现我可以通过修改上面的内容将特定页面重定向到移动版本,

<script type="text/javascript">
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
 window.location = "http://m.mysite.co.uk" +  window.location.pathname;
}
</script>

唯一的问题是URL路径末尾的尾部斜杠导致无法识别URL。

有没有办法在Javascript中删除这个尾部斜杠?

该网站位于旧的Windows 2003服务器上,因此只要有人建议使用URL重写模块,它就是IIS6。

感谢您提出的任何建议。

4 个答案:

答案 0 :(得分:1)

只需使用简单的测试并删除尾部斜杠:

$("input:radio[name=layout]").click(function() {
    var layout = $(this).val();
    cy.layout({ name: layout });        
});

答案 1 :(得分:1)

要解决多个斜杠的问题,可以使用此正则表达式删除斜杠,然后使用结果字符串代替window.location.pathname

const pathnameWithoutTrailingSlashes = window.location.pathname.replace(/\/+$/, '');

答案 2 :(得分:0)

要删除/之前/之后,请使用它(虽然不漂亮)

let path = window.location.pathname.replace(/\/+$/, '');
path = path[0] == '/' ? path.substr(1) : path;

答案 3 :(得分:0)

不是 OP 所要求的,但这里有一些正则表达式的变体,具体取决于您的用例。

let path = yourString.replace(/\//g,''); // Remove all slashes from string

let path = yourString.replace(/\//,''); // Remove first slash from string

let path = yourString.replace(/\/+$/, ''); // Remove last slash from string