加载另一个相同页面时,使用新数据激活第一个网页

Activate first webpage with new data when another of the same page is loaded

本文关键字:新数据 数据 网页 第一个 激活 另一个 加载      更新时间:2023-09-26

我正在尝试编写一个小型Web应用程序,该应用程序能够从URL参数中获取数据并显示有关该数据的适当信息。页面不会在服务器端呈现,因此所有参数都告诉该 javascript 要发送到我的 JSON API 并加载到视图中的内容。该页面是从另一个桌面应用程序加载的,该应用程序对要在它加载的 URL 中使用的数据进行编码,因为这是我可以让它与网站通信的唯一方法......因此,例如,桌面应用程序将生成一个链接,例如

http://myapp/?room=1&tile=7

这在第一个实例中工作正常,但我希望它像许多桌面应用程序一样工作,如果您再次加载应用程序,它只会使用新数据调出原始实例。我知道新页面必须至少短暂加载,但是有没有办法让它只获取新数据,将其发送到页面的第一个实例,然后自行关闭?当我有一个主页并且我使用 window.open() 打开第二个时,我知道该怎么做,我可以强制重新加载。但是我从来没有在手动打开第一个实例的情况下这样做,然后我需要与之交互。

这个实现的一个主要问题是window.close()不起作用,所以你必须要求用户关闭窗口。这里谈论"问题"或功能 https://stackoverflow.com/a/19768082/3951400

<!doctype html>
<html>
<head>
<script>
function update() {
  localStorage.setItem('lastUpdate', Date.now());
  // Here you could check the data-item for changes
}
function setData() {
  localStorage.setItem('data', window.location.search);
}
var t, lastUpdate = localStorage.getItem('lastUpdate');
if(lastUpdate === null || (Date.now() - Number(lastUpdate) > 1000)) {
  // Likely no other window
  setData();
  t=setInterval(update, 100);
} else {
  setData();
  alert("please close this. ctrl+w");
}
</script>
</head>
<body>
Hello
</body>
</html>