具有(本地)Web应用程序,首次用户通过Web浏览器连接到服务器时,将显示带有许可协议的弹出窗口。如果他们接受,则将隐藏弹出窗口,并对服务器进行Aysnc调用,该调用将坚持以下事实:已接受EULA,并且将重新创建该页面,因此不会显示任何弹出窗口(如果它们拒绝EULA,应用程序退出)。
如果用户没有做任何其他事情,则很麻烦,然后用户再次通过Web浏览器连接到服务器时,浏览器仅返回缓存的网页,而不是新创建的版本,因此再次显示Eula。
如果他们强制刷新,则EULA弹出窗口将消失,但这对用户而言并不容易。因此,如何强制浏览器转到服务器以获取页面的最新版本,而不是返回缓存的页面。
这是一个html问题,但可能有助于了解我正在使用Spark Framework(一种用于创建Web应用程序的Java框架)。
答案 0 :(得分:1)
Chrome: Windows:按住“ Ctrl”并单击刷新按钮 Mac:按住“ Shift”并单击刷新按钮
Firefox: Windows:按住“ Ctrl”并按“ F5” Mac:按住“ Shift”并按“ f5”
这被称为“硬刷新”。
答案 1 :(得分:0)
所以我有一个适合我的解决方案。当用户单击“确定”按钮时,它已经调用了与服务器通信的Javascript函数,然后在返回时向现有页面添加了一条消息。
function eulaAccept()
{
var xhr = new XMLHttpRequest();
xhr.open('POST', '/start.eulaaccept', true);
xhr.setRequestHeader("Content-type", "text/plain");
xhr.send("done");
$('#eula').modal('hide')
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200)
{
alerts=document.getElementById("messages");
var alert = document.createElement("div");
var msg = document.createTextNode("Thankyou for accepting the EULA");
alert.className = "alert alert-info";
alert.appendChild(msg);
alerts.appendChild(alert);
}
};
}
但是由于服务器重新创建了页面,所以我只需要添加 window.location.reload(true); 即可在服务器返回后强制重新加载文件。
function eulaAccept()
{
var xhr = new XMLHttpRequest();
xhr.open('POST', '/start.eulaaccept', true);
xhr.setRequestHeader("Content-type", "text/plain");
xhr.send("done");
$('#eula').modal('hide')
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200)
{
window.location.reload(true);
}
};
}
(并且我决定不再需要删除此消息)