javascript 仅在每个Web会话中显示元素(按ID)

vfh0ocws  于 2023-01-07  发布在  Java
关注(0)|答案(1)|浏览(116)

我有这个小部件元素,需要显示每个Web会话,而不是每个页面,经过一些研究,我意识到我需要为这个元素设置cookie。
你对这件事有什么建议?
更新〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉〉:
我从下面的答案中得到了一些帮助,到目前为止,这是我们得出的结果,尽管新脚本添加了一个存储会话,但它实际上并没有将display:block规则替换为none

if (window.sessionStorage.getItem("elementViewed") === "true") {
  let element = document.getElementById('block-16');
  element.style.display = 'none';
}
body {
  height: 20vh;
}

#block-16 {
  position: fixed!important;
  width: auto;
  right: 100px;
  top: 15px;
  padding: 30px;
  background-color: green;
  font-size: 50px;
  z-index: 2;
}

aside {
  display: block
}
<aside id="block-16" class="footer_widgets widget_block col-xs-12 col-md-3">
  <p>test</p>
  <!-- A slider shortcode comes here and this slider has its own animation like fadeIn and FadeOut in 10 seconds thats why it doesnt need an extra animation script or Css rule -->
okxuctiv

okxuctiv1#

一种选择是使用window.sessionStorage属性,该属性的作用域限于当前浏览器会话。
在元素的第一个视图之后,或者在单击(如果它有关闭按钮)时,可以在sessionStorage中设置一个值。
设置该值类似于:

window.sessionStorage.setItem("elementViewed", "true");
// true is a string, as sessionStorage key and value are strings

然后检查页面加载的值:

if (window.sessionStorage.getItem("elementViewed") === "true") {
    let element = document.getElementById('block-16');
    element.style.display = 'none';
}

相关问题