如何防止全局 javascript 变量在每次页面加载时初始化?

How do I prevent a global javascript variable from initializing on every page load?

我试图在有人第一次访问我的网站时显示一个 div 标签。单击其他页面的链接后,当他们返回主页时,我不想显示 div 标签。有什么方法可以保存会话变量之类的东西,我可以对其进行测试,这样我就不会显示介绍性的 div-tag?

我尝试在函数外部使用全局声明,但每次加载页面时都会进行初始化。由于它是一个 .php 页面,它 当然会重新加载。

有没有其他方法可以做到这一点(cookie 除外),例如通过执行来自 php 的 javascript 代码(我知道如何在 PHP 中执行会话变量).

如果您出于某种原因不想使用存储空间,并在 php 页面加载上读取您的 preventive 变量,您可以 post 它到您的用户将要访问的任何页面,并让这些页面 post 当他们回来时,它到您的原始第一个脚本。笨拙,代码很多,但如果您的问题是实现您描述的目标的方法,它就可以工作。

首先感谢@Denys Séguret 为我的问题提供了答案。这是我最终创建的代码。

首先,在 .php 文件的 Header 中,我有:

    <script type="text/javascript">
    if (sessionStorage.getItem('firsttime') === null) {
        sessionStorage.setItem('firsttime', 'True');
    }
    function Hider(){
        document.getElementById("Opener").style.display = "none";
        sessionStorage.setItem('firsttime', 'False');
        }
    </script>

然后在 body 中,我有:

<script type="application/x-javascript">
  var IsItFirstTime = sessionStorage.getItem('firsttime');
  varMessage1 = "<p class=\"h1\">Welcome to Blah-Bla!</h1><br><h2>The premier site for the best movies!</h2>"
  varMessage2 = "<p>Every week we bring you a fresh batch of movies and you can expect these to be the best movies in that category.</p><p>Click to Continue</p>"
  if (IsItFirstTime == 'True') {
      var1 = "<div id=\"Opener\" onclick=\"Hider()\">" + varMessage1 + varMessage2 + "</div>";
      document.write(var1);
  }
</script>

这是外围设备,但这里是 CSS:

#Opener {
  background-color: #ff0099;
  position:absolute;
  width:600px;
  height:440px;
  z-index:100;
  margin-left: 50%;
  left: -300px;
  top: 180px;
  text-align:center;
  padding-left:50px;
  padding-right:50px;
}

注意 z-index 行,它在页面上浮动 "Opener" div。

希望这对其他人有帮助。