我想立即修改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"
});
但是没有一个有用的线索吗?
谢谢!
答案 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);
}