django 在窗口中循环,位置

hk8txs48  于 2023-06-25  发布在  Go
关注(0)|答案(2)|浏览(135)

我从sessionStorage获取lat和lng,我想用window.location将其发送到浏览器,但我进入了无限循环。

var lat = sessionStorage.getItem('lat');
    var lng = sessionStorage.getItem('lng');       
    window.location = '?lat='+lat+'&lng='+lng;

我看到了其他关于这方面的问题,但他们没有工作。我尝试使用窗口.位置.哈希/ href等...但结果不是我所期望的
有人知道如何构建该功能以正常工作吗?非常感谢

nbnkbykc

nbnkbykc1#

在设置位置之前进行检查,以免陷入循环。

const urlParams = new URLSearchParams(window.location.search);
const latQS = urlParams.get('lat');
const lat = sessionStorage.getItem('lat');
cost lng = sessionStorage.getItem('lng');       
if (!latQS && lat && lng) {
  const lat = sessionStorage.getItem('lat');
  cost lng = sessionStorage.getItem('lng');       
  window.location = '?lat='+lat+'&lng='+lng;
}

另一个选项是使用pushstate设置历史记录

const lat = sessionStorage.getItem('lat');
cost lng = sessionStorage.getItem('lng');
if (lat && lng) { 
  const url = new URL(window.location);
  url.searchParams.set('lat', lat);
  url.searchParams.set('lng', lng);
  window.history.pushState({}, '', url);
}
l7mqbcuq

l7mqbcuq2#

这里有一个自调用函数来实现你想要的

const redirect = (() => {
  var lat = sessionStorage.getItem("lat");
  var lng = sessionStorage.getItem("lng");
  const params = new URLSearchParams(window.location.search);
  !params.get("lat") ? (window.location.href = `?lat=${lat}&lng=${lng}`) : null;
})();

相关问题