2015-04-21 49 views
0

我正在制作精酿啤酒网页,并且我希望用户在进入之前键入其年龄。最初的提示有效,但如果我切换标签并返回主页,我会再次提示。本地存储JavaScript中的HTML

问:如何我只得到一个提示,并保存它,直到用户退出整个网页包括浏览tabs.`

我的脚本:

<script> 
 

 
function CloseWindow(){ 
 
window.open('','_self',''); 
 
window.close(); 
 
} 
 
</script> 
 

 
<script> 
 
var age; 
 
age = prompt("Please enter in your age: "); 
 
if (age >= 21){ 
 
    alert("Age is valid"); 
 
} 
 
else{ 
 
    alert("Not valid age"); 
 
    CloseWindow(); 
 
} 
 
</script>

+0

做本地存储做每个会话'html5存储' – KRUKUSA

+1

设置cookie将是一个简单的方法。 – Nived

+1

我同意@Nived。一个cookie将是最好的选择。或者,如果您可以使用PHP,请设置会话变量。 –

回答

1

使用window.localStorage对象存储用户的年龄。这将允许信息通过页面持续存在。

if (window.localStorage && !window.localStorage.age) { 
    //Your code here to prompt the user's age and save it in window.localStorage.age 
} else { 
    //Your code here to prompt the user's age and save it in document.cookie 
} 
+1

不应该首先检查“localStorage”支持,如果不支持则回退到Cookie? – Xufox

+1

你说得对。我编辑了上面的例子来反映这一点。谢谢。 –

0

为了做到这一点,你需要创建在本地存储变量中,并再次运行全功能之前检查其内容。我建议你在网上检查教程如何做到这一点,这里有一个我发现你:http://diveintohtml5.info/storage.html

下面是如何做到这一点简直太为例:

//Get the variable from the local storage 
var age = localStorage.getItem('age') || 0; //instead you get nothing 

if (age >= 18) { 
    //access the website 
} else { 
    //here's where you run your function 
    //... 

    //Set the local storage variable 
    localstorage.setItem('age', age) //where *age* is the name of the function's variable 

} 

我希望这将有助于!祝你好运;)

1

下面是一个关于如何通过在代码上构建localStorage的示例代码片段。你可以清理它,以满足你的需求。如果您想要关闭浏览器时重置的替代方法,则可以用sessionStorage替换localStorage

function CloseWindow() { 
    window.open('', '_self', ''); 
    window.close(); 
} 

var validAge = localStorage.getItem('validAge'); 
if (!validAge) { 
    var age; 
    age = prompt('Please enter in your age: '); 
    if (age >= 21) { 
    alert('Age is valid'); 
    localStorage.setItem('validAge', 'true'); 
    } else { 
    alert('Not valid age'); 
    localStorage.setItem('validAge', 'false'); 
    CloseWindow(); 
    } 
} else if (validAge === 'true') { 
    alert('Age is valid'); 
} else if (validAge === 'false') { 
    alert('Not valid age'); 
    CloseWindow(); 
} 

这是一个link,显示了过时的浏览器的一些localStorage的polyfills。

+0

嘿,这工作完美的Chrome,但在IE浏览器,我甚至没有得到一个弹出框。有任何想法吗?? – user3658656

+0

你使用的是什么版本的IE?如果你使用8以下,那么它将不兼容。请参阅http://caniuse.com/#feat=namevalue-storage。如果你想为localStorage填充一个polyfill,请查看我帖子底部的链接。点击'f12'并查看'Browser Mode'的右上角标签。检查'Console'以查看是否有关于localStorage的错误。 – boombox

+0

我的IE浏览器已更新为最新版本。这很奇怪 – user3658656