JS/HTML5 从 url 中删除 url 参数

Posted

技术标签:

【中文标题】JS/HTML5 从 url 中删除 url 参数【英文标题】:JS/HTML5 remove url params from url 【发布时间】:2012-05-19 13:06:30 【问题描述】:

我有一个这样的网址

/users/?i=0&p=90

如何在 js 中删除部分

? to 90

谁能给我看一些代码?

编辑

我的意思是用 window.location.href 来做这个(所以直接在浏览器的 url 栏中)

我试过了

function removeParamsFromBrowserURL()
    document.location.href =  transform(document.location.href.split("?")[0]);
    return document.location.href;

我也不想进行重定向,所以只需从 ?结束

【问题讨论】:

所以你只希望它是/users/90,或者/users/之后什么都没有? @JonathanSampson 我只需要 /users/ 但不是字符串,我需要直接在浏览器栏上这样做 document.location.href = transform(document.location.href);对转换本身使用以下任何答案。 Errm... 我的意思是更多类似于 document.location.href = document.location.href.split("?")[0] 的意思(transform 是一个隐喻函数,表示以下答案之一 - 它不存在) 【参考方案1】:
function removeParamsFromBrowserURL()
    return window.location.href.replace(/\?.*/,'');

【讨论】:

应该没问题,但它会重定向我 当然会重定向。没有重定向就没有办法做到这一点。 不,这个函数只返回window.lcoation.href的“干净​​”部分【参考方案2】:

如果你只想要/users/ 部分:

var newLoc = location.href.replace( /\?.+$/, '' );

您也可以拆分字符串,并返回第一部分:

var newLoc = location.href.split("?")[0];

或者您可以将所有内容匹配到问号:

if ( matches = location.href.match( /^(.+)\?/ ) ) 
  alert( matches[1] );

【讨论】:

【参考方案3】:

一种方法是leftside = whole.split('?')[0],假设没有?在所需的左侧

http://jsfiddle.net/wjG5U/1/

这将从 url 中删除 ?... 并自动将浏览器重新加载到剥离的 url(无法使其在 JSFiddle 中工作)我将以下代码放在一个文件中,并放入一些 ?a=b 内容手动然后点击按钮。

<html>
  <head>
    <script type="text/javascript">
function strip() 
  whole=document.location.href;
  leftside = whole.split('?')[0];
  document.location.href=leftside;


    </script>
  </head>
  <body>
    <button onclick="strip()">Click</button>
  </body>
</html>

【讨论】:

我不是专家,但我相信这些人 :) ***.com/a/6478682/1325290 没有重定向 :(【参考方案4】:

如果您只想要 /users/ 部分,那么您可以将其子串化:

var url = users/?i=0&p=90;
var urlWithNoParams = url.substring(0, url.indexOf('?') - 1);

这会将字符串从索引 0 提取到 '?' 之前的字符字符。

【讨论】:

【参考方案5】:

无论我使用哪个 url 重定向,我都遇到了 #page 来回引用粘在 url 中的问题。这解决了一切。

我是这样使用脚本的:

<script type="text/javascript">

function strip() 
  whole=document.location.href;
  leftside = whole.split('#')[0];
  document.location.href=leftside;

</script>
<a onclick="strip()" href="http://[mysite]/hent.asp" >Click here</a>

【讨论】:

以上是关于JS/HTML5 从 url 中删除 url 参数的主要内容,如果未能解决你的问题,请参考以下文章

VUEJS-如何从 url 中删除参数

通过删除 Laravel 中的多余字符,从斜杠分隔的 url 中提取参数值

如何从 url 中删除 socket.io EIO 和其他参数

重定向到`Java`中的get方法时如何从url中删除参数[重复]

从URL中删除UTM参数

htaccess:从缺少值的查询字符串中删除 URL 参数?