0

我需要能够更改域变量(如果尚未设置,则设置它)然后重新加载页面。我不在乎页面是否没有重新加载,事实上我需要它来重新加载。

例如,如果用户在页面上:sample.com/demo?theme=theme1 并且他们从下拉列表中选择了一个新主题我想更改主题变量以将浏览器导航到具有新域变量的同一页面,所以在本案例 sample.com/demo?theme=newtheme。

我不能只做一个标准的重定向,因为我不希望他们只是去主页我希望他们留在当前页面上只是改变了变量。例如,如果他们在这里:sample.com/demo/aboutus?theme=theme1那么他们将被发送到这里:sample.com/demo/aboutus?theme=newtheme

4

2 回答 2

1

一个简单的正则表达式可以:

window.location = window.location.url.replace(/(\?|&)theme=[^&]+/, '$1theme=newtheme');
于 2013-02-15T16:33:26.983 回答
-1

只需使您的锚标签相对:

<a href="?theme=theme1">Theme 1</a>
<a href="?theme=theme2">Theme 2</a>
<a href="?theme=theme3">Theme 3</a>

唯一的缺点是当前的查询字符串将被新的查询字符串完全替换,如果这甚至是一个问题的话。

这当然也可以用 javascript 来完成:

window.location = "?theme=theme1";
//window.location = "?theme=theme2";
//window.location = "?theme=theme3";
于 2013-02-15T16:36:48.877 回答