如何防止全局 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。
希望这对其他人有帮助。
我试图在有人第一次访问我的网站时显示一个 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。
希望这对其他人有帮助。