2017-01-13 13 views
0

ウェブサイトの最初の読み込み時に、以下のコードを1回だけ実行したいと思います。 私はcookieとsessionstorageで試しました。しかし、私は決して適切な解決策を見つけたことはありません。多分それは間違っていたでしょう。誰もがセッションストレージでそれを解決する方法を知っていますか?私はそれで決して何もしなかった。多分このような何か? :Javascript - セッションごとに1回実行

if (!sessionStorage.alreadyClicked) { 
    $('#my_div'); 
    sessionStorage.alreadyClicked = 1; 
} 

助けてください。ありがとうございました。

var my_div; 
 
topIgnore = 100; // (in pixel units) used for function ignoreTop 
 

 
window.onload = function() { 
 
    my_div = document.getElementById('my_div'); 
 
    var my_div_style = window.getComputedStyle(my_div); 
 
    var width_div = parseInt(my_div_style.width, 10); // remove 'px' from string 
 
    var height_div = parseInt(my_div_style.height, 10); 
 
    // make sure the property exists, else you can get a NaN 
 
    my_div.style.left = 0; 
 
    my_div.style.top = 0; 
 
    // event 
 
    window.onmousemove = function(e) { 
 
    // my_div.innerHTML = e.pageX +' - '+ (leftBorder + width_div) +' - '+ width_div; 
 
    cursorIsInsideDiv(e); 
 
    } 
 
    // TO DO: feel free to make similar functions for left/right/bottom 
 
    // removes the first 100px 
 
    function ignoreTop(top) { 
 
    if(top < topIgnore) { 
 
     return topIgnore; 
 
    } 
 
    return top; 
 
    } 
 
    function cursorIsInsideDiv(e) { 
 
    var leftBorder = parseInt(my_div.style.left, 10); // remove 'px' from string 
 
    var topBorder = parseInt(my_div.style.top, 10); 
 
    // move left 
 
    if(e.pageX < leftBorder) { 
 
     my_div.style.left = e.pageX + 'px'; 
 
    } 
 
    // move right 
 
    else if(e.pageX > (leftBorder + width_div)) { 
 
     my_div.style.left = (e.pageX - width_div) + 'px'; 
 
    } 
 
    // move up 
 
    if(e.pageY < topBorder) { 
 
     var top = e.pageY ; 
 
     top = ignoreTop(top); 
 
     my_div.style.top = top + 'px'; 
 
    } 
 
    // move down 
 
    else if(e.pageY > (topBorder + height_div)) { 
 
     my_div.style.top = (e.pageY - height_div) + 'px'; 
 
    } 
 
    } 
 
}
#my_div { 
 
    width: 100%; 
 
    height: 100%; 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 
#my_div { 
 
    width: 300px; 
 
    height: 150px; 
 
    background: #ff0000; 
 
    position: absolute; 
 
}
<div id="my_div"> 
 
    <h2>Newsletter</h2> 
 
    Name: <input type="text" name="fullname"><br> 
 
    Email: <input type="text" name="email"><br> 
 
</div>

+0

あなたはセッションごとに一回、または "永遠に" 一度意味しますか? – vaso123

+0

セッションあたり1回 – azrm

+0

申し訳ありませんが、あなたのSOスニペットコードに 'sessionStorage'が表示されません。 – Justinas

答えて

0

使用JSクッキーを設定します

document.cookie = "alreadyClicked=1; expires=Fri, 13 Jan 2017 20:00:00 UTC"; 

その後、それは(http://www.w3schools.com/js/js_cookies.aspから)値を見つけるための関数を定義することによって、存在するかどうかをチェックすることができます:

function getCookie(cname) { 
    var name = cname + "="; 
    var decodedCookie = decodeURIComponent(document.cookie); 
    var ca = decodedCookie.split(';'); 
    for(var i = 0; i <ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') { 
      c = c.substring(1); 
     } 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length, c.length); 
     } 
    } 
    return ""; 
} 
if (getCookie("alreadyClicked") == "1") { 
    // do stuff if already clicked 
} else { 
    // prompt for click? 
} 
0

私はちょうど間にコードを挿入しました。出来た。それが間違っていると訂正されました。

if (!sessionStorage.alreadyClicked) { 
$('#my_div'); 
sessionStorage.alreadyClicked = 1; 

}

関連する問題