-1

プログラミングの課題について少し混乱しています。ページがロードされたときに、ページが最後にロードされたときにユーザーがボタンをクリックしたかどうかをローカルストレージが検出するように、ボタンを作成する必要があります。ユーザーがボタンをクリックした場合、ボタンをクリックしたことを示す警告ステートメントを提供する必要があります。そうでない場合、アラートはボタンをクリックしていないことを示す必要があります。私が求めているのは、前のページの読み込みで htm ボタンがクリックされたかどうかを確認する方法はありますか? ありがとうございました。

4

3 に答える 3

0

ローカル ストレージの デモあり

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");

}

クッキー デモ付き

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);
}
于 2013-05-28T15:55:38.507 に答える
-1

Cookie を回避したい場合は、トリックを実行できます。

このボタン クリック イベントに、フォームのフィールドを編集する関数を追加し、ページをリロードするだけでなく、このフォームを同じページに送信して (メソッドを取得)、クリックの値を簡単に取得できます。 url (フォームは非表示にできるため、ユーザーには表示されません)。onload (これも初めて) checkme 関数は URL に「いいえ」の値を追加するため、ページを送信またはリロードすると、アラートに「いいえ」が表示されます。ボタンをクリックすると URL の値が変更され、ページをリロードするかフォームを送信すると、アラートに「はい」の値が表示されます。

これは機能します。はい、ハッキングされる可能性がありますが、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>
于 2013-05-28T16:03:02.740 に答える