我对我的编程任务感到有点困惑。我需要创建按钮,以便在加载页面时,本地存储将检测用户是否在上次加载页面时单击了按钮。如果用户单击了该按钮,则应该发出警告声明,说明他们已单击该按钮。如果没有,警报应该说他们没有点击按钮。我问的是,有没有办法检查并查看上一页加载时是否点击了htm按钮?谢谢。
答案 0 :(得分:2)
不,没有'本地'方式检查上一页加载时是否点击了html按钮。您可以sortof(https://developer.mozilla.org/en-US/docs/Web/CSS/Privacy_and_the_:visited_selector)检查是否已使用:visited css选择器访问过链接,但这不是您想要的,因为它将持续存在多个页面视图。
可能最好的办法是:
加载页面时,请检查本地存储以查看是否设置了某个值(即linkVisited)
一个。如果已访问过,请在“点击”该链接时绑定一个事件,并显示一条提示“已访问链接”的提醒。
湾如果尚未访问,请在链接的“click”上绑定一个事件,并在跟随链接(window.location = link href)之前在本地存储中设置一个值(即linkVisited)。
绑定相应的事件后,清除localstorage中的任何现有值,以便后续刷新将继续到1.b而不是1.a
答案 1 :(得分:0)
与本地存储 的 DEMO 强>
HTML
<body onload="checkCookie()">
<input type="button" value="Click ME" onclick="addCookie()">
</body>
脚本
function checkCookie()
{
var username= localStorage.getItem("buttonClicked");
if (username!=null && username!="" )
{
alert("Button Clicked");
localStorage.removeItem("buttonClicked");
}
else
{
alert("Button Not Clicked");
}
}
function addCookie(){
localStorage.setItem("buttonClicked","true");
}
与COOKIE 的 DEMO 强>
HTML
<body onload="checkCookie()">
<input type="button" value="Click ME" onclick="addCookie()">
</body>
脚本
function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}
function getCookie(c_name)
{
var c_value = document.cookie;
var c_start = c_value.indexOf(" " + c_name + "=");
if (c_start == -1)
{
c_start = c_value.indexOf(c_name + "=");
}
if (c_start == -1)
{
c_value = null;
}
else
{
c_start = c_value.indexOf("=", c_start) + 1;
var c_end = c_value.indexOf(";", c_start);
if (c_end == -1)
{
c_end = c_value.length;
}
c_value = unescape(c_value.substring(c_start,c_end));
}
return c_value;
}
function checkCookie()
{
var username=getCookie("buttonClicked");
if (username!=null && username!="")
{
alert("Button Clicked");
setCookie("buttonClicked",null,-365);// RESET Cookie
}
else
{
alert("Button Not Clicked");
}
}
function addCookie(){
setCookie("buttonClicked","true",365);
}
答案 2 :(得分:-1)
如果你想避免cookie,你可以做一个技巧:
您可以向此按钮单击事件添加一个编辑表单字段的函数,然后,不是只是重新加载页面,而是将此表单发送到同一页面(获取方法),然后您可以轻松获取值从网址点击(表单可以隐藏,因此用户无法看到它)。 onload(也是第一次)checkme函数将“no”值添加到url,因此,如果您发送或重新加载页面,则警报显示“no”。如果单击该按钮,则会更改网址值,如果您重新加载页面或发送表单,则警报会显示“是”值。
这样可行,是的,它可以被黑客入侵,但无法使用cookie
<body onload="checkme(document.URL)">
<script>
function checkme(ur){
var interesting = ur.split('?');
if(typeof(interesting[1]) != 'undefined'){
var more_interesting = interesting[1].split('=');
alert(more_interesting[1]);
document.getElementById('myfieldhidden').value='no';
window.history.replaceState('Object', 'Title', '?clicked=no');
}else{
//first load
window.history.replaceState('Object', 'Title', '?clicked=no');
}
}
function func2(){
window.history.replaceState('Object', 'Title', '?clicked=ye');
}
</script>
<button onclick="document.getElementById('myfieldhidden').value='ye';func2()"></button>
<form title="myformsecret" action="" id="myformsecret" method="get">
<input name="clicked" id="myfieldhidden" value="nop"/>
</form>
<a href="javascript:document.getElementById('myformsecret').submit()">send me when you want</a>
</body>