我从服务器收到请求后显示了flash消息。如果用户点击同时返回并前进按钮...他再次看到相同的Flash消息,我认为这对用户来说是一个坏消息......我该如何解决这个问题?
答案 0 :(得分:3)
这是因为浏览器可以帮助您使用缓存加载页面。你可以做这些
header('Cache-Control: no-store, private, no-cache, must-revalidate');
header('Cache-Control: pre-check=0, post-check=0, max-age=0, max-stale = 0', false);
或
<meta http-equiv="cache-control" content="max-age=0"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="expires" content="0"/>
<meta http-equiv="pragma" content="no-cache"/>
或
@if(Session::has('message'))
<div class="alert alert-{{ Session::get('status') }} status-box">
<button type="button" class="close" data-dismiss="alert"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
{{ Session::get('message') }}
</div>
@endif
答案 1 :(得分:1)
您可以使用JavaScript将显示的消息中的messageId存储在变量或(隐藏)输入字段中,这样您就可以检查消息是否已经显示。
答案 2 :(得分:1)
我已经通过以下代码解决了这个问题
import cv2
img = cv2.imread("D:\\testing\\test.png",1)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
greenMask = cv2.inRange(hsv, (26, 10, 30), (97, 100, 255))
img[greenMask == 255] = (0, 255, 0)
cv2.imshow('test', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
答案 3 :(得分:1)
晚了聚会,但是上面提议的标题解决方案对我不起作用。
相反,我使用performance.getEntriesByType(受到广泛支持)来确定用户是否通过后退按钮到达页面,如果是,则从Flash消息容器中删除显示Flash消息的代码。 :
<script>
var perfEntries = performance.getEntriesByType("navigation");
for (var i = 0; i < perfEntries.length; i++) {
if(perfEntries[i].type === "back_forward"){ // if user has reach the page via the back button...
document.querySelector("#flashMessageContainer").innerHTML = ""; //...delete the contents of the flash container
}
}
</script>
如果用户通过单击后退或前进浏览器按钮到达页面,则'performance.getEntriesByType(“ navigation”)'返回“ back_forward”(在我的情况下,不需要在屏幕上显示Flash消息)向前点击)。如果单击链接或提交表单导致重定向,它将返回“导航”。
归因:我从llaaalu捏了the solution