首页 > 解决方案 > 在不重新加载页面的情况下覆盖 location.search javascript

问题描述

我现在想修改 location.search 属性,如果我这样做:

<script>location.search = "dummyparam=dummyvalue";</script>

但是它将页面重新加载到新的 url,包括 location.search 的新值,我想要的是伪造它。

我尝试使用:

Object.defineProperty(window, 'location', {
  search: "fakeparam=fakevalue"
});

也在做:

Object.defineProperty(location, 'search', {
  search: "fakeparam=fakevalue"
});

但没有一个工作,任何线索?

谢谢!

标签: javascript

解决方案


无需重新加载即可修改 url(包括 location.search)的唯一方法是使用 HTML5 历史 API 推送状态。

您可以执行以下操作:

window.history.pushState("", "", "/this-is-new-url?fakeparam=fakevalue");

推荐阅读