Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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 使用js修改URL参数的最佳方法_Javascript_Jquery_Url Modification - Fatal编程技术网

Javascript 使用js修改URL参数的最佳方法

Javascript 使用js修改URL参数的最佳方法,javascript,jquery,url-modification,Javascript,Jquery,Url Modification,我试图修改URL参数,但找不到完美的方法 首先,我尝试了: window.location.href = window.location.href + '?test'; window.location.href = String( window.location.href ).replace( "?test", "" ); 问题是,页面会重新加载,而只是添加到url中 然后我试着: window.location.href = window.location.href + '?test';

我试图修改URL参数,但找不到完美的方法

首先,我尝试了:

window.location.href = window.location.href + '?test';
window.location.href = String( window.location.href ).replace( "?test", "" );
问题是,页面会重新加载,而只是添加到url中

然后我试着:

window.location.href = window.location.href + '?test';
window.location.href = String( window.location.href ).replace( "?test", "" );
这很好用,我想替换的部分被替换/删除,但是页面每次都会重新加载

然后我读到:

window.history.pushState( {} , 'test', '?test' );
但不知怎的,这不管用

我的目标是在单击按钮控制功能时添加和替换/删除URL字符串

例如。 网址是

例如,这显示了基于这些URL参数的覆盖和提示工具提示。 当用户关闭覆盖时,“showoverlay”部分应在不重新加载页面的情况下删除。因此,URL是:


您是否尝试过使用replaceState?它在不重新加载页面的情况下替换历史记录,并且可能适合您的用例

window.history.replaceState(data, title [, url  ] );

如果需要保留url的其他部分,请确保将其存储在单独的变量中,并将其附加回url

这大致是您获取URL每个部分的方式:

let url = window.location.origin + window.location.pathname + window.location.search
然后你只要把它加回去

window.history.replaceState({}, '', url + '&yourNewParameters=value')

是的,我试过了,但由于我的开发技能不高,存储url的其他部分太复杂了。没有更简单的方法了吗?请检查我的更新答案,我包括了一个例子谢谢你的帮助。问题是,我不知道url的其他字符串。所以我不能用固定字符串替换它。我需要切断“showoverlay”,但“showhint”仍应保留在url中。但也可能是,“showhint”以前被删除了。因此,我正在寻找搜索,如果有,请更换此部分,但保留其余部分:因此,您必须使用let searchStr=window.location.search单独存储您的搜索字符串,然后使用searchStr.indexOf('showoverlay')检查是否有showoverlay,然后您只需使用searchStr.replace('showoverlay','something other')即可。我知道这有点冒失,但您能为我提供一个简单的jsfiddle,在单击的地方,一个参数被添加,在关闭的时候,它被删除,所以我可以试着去理解——因为我不是这样理解的。但这听起来正是我想要的。