在不重新加载页面的情况下覆盖location.search javascript

时间:2018-08-19 06:50:44

标签: 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"
});

但是没有一个有用的线索吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

您可以执行以下操作:

 componentDidMount() {
    navigator.geolocation.getCurrentPosition(
        position => {
            var lat = parseFloat(position.coords.latitude);
            var long = parseFloat(position.coords.longitude);
            var initialRegion = {
                latitude: lat,
                longitude: long,
                latitudeDelta: LATITUDE_DELTA,
                longitudeDelta: LONGITUDEDELTA
            };
            this.setState({ intialposition: initialRegion });
        },
        error => {
            console.error(error);
        },
        { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
    );

    this.watchID = navigator.geolocation.watchPosition(position => {
        var lat = parseFloat(position.coords.latitude);
        var long = parseFloat(position.coords.longitude);
        var LastRegion = {
            latitude: lat,
            longitude: long,
            latitudeDelta: LATITUDE_DELTA,
            longitudeDelta: LONGITUDEDELTA
        };

        this.setState({ intialposition: LastRegion });
    });
}

componentWillUnmount() {
    navigator.geolocation.clearWatch(this.watchID);
}