2

私は登録ユーザーだけができるウェブページを持っています。
私はCSSフレームワークとしてブートストラップを使用します。
ユーザーがログインしている場合は、このようなsuccessmessageと警告ボックスのようになりますjqueryで関数を1回だけ実行するには?

<div class="container"> 
    <div class="alert alert-success" role="alert"> 
     <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button> 
     <strong>Success!</strong> You have been signed in successfully! 
    </div> 
</div> 

今私は、数秒後にこれを閉じるようにしたいです。私はそれを行うには、このjqueryのスクリプトを使用します。もう一度、この警告は表示されません、ユーザーが誤ってブラウザをリフレッシュした場合ように

window.setTimeout(function() { 
    $(".alert").fadeTo(500, 0).slideUp(500, function(){ 
    $(this).remove(); 
    }); 
}, 1500); 

は、どのように私は、一度だけこのコードを実行することができますか?

私はここhttps://stackoverflow.com/a/23859937/5930557 を、この記事を読んで、それがhttp://api.jquery.com/one/
から.one()機能で行うことができますが、私は私のコードにそれを含める方法を知らないことを知っていました。私のためにそれを修正し、説明することができる誰かがjqueryとjavascriptが私にとって新しいものです:P

+0

1()関数は、あなたを助けにはなりません、あなたはのlocalStorageで変数を設定してみてください可能性があり何らかの種類のセッションIDを使用してチェックします。 – JohannesB

+0

ユーザーがページを更新した場合、スクリプトはリロードされますので、スクリプトは機能しません。私はそれを行うためにクッキーまたはセッションを使用します。セッションまたはクッキーが存在する場合、私はスクリプトを実行しません。それ以外の場合は実行されます。 – Pierre

+0

クッキー、またはlocalStorageを使用するか、ログイン成功関数でアラートを表示する関数を呼び出してください。 – Brian

答えて

1

.one()ページがロードされているので、あなた例えば働かない毎回、一度イベントをトリガします。

別の答えは次のようなもの、あなたがクッキーを使用することができ、言ったように:リフレッシュブラウザで

// get the cookie if its there 
var popUpShown = getCookie('popUpShown'); 
var numberOfDaysCookieExpiresIn = 99999999999; 

// check the cookie to see if the popup has been shown already 
if (popUpShown != '1') { 
    window.setTimeout(function() { 
    $(".alert").fadeTo(500, 0).slideUp(500, function(){ 
     $(this).remove(); 
    }); 
    }, 1500); 

    // set the cookie so we dont show the pop up again 
    setCookie('popUpShown', '1', numberOfDaysCookieExpiresIn); 
}; 
2

クッキーを使うことができます。説明されているhere

ページロード時にクッキーをチェックすることができ、空でない場合は空であれば何をしたいのかを指定できます。

1

解決策は、クッキーを使用し、その日付を非常に遠くに設定することです。

注:このフィドルでは、Cookieを設定できません。

$(function(){ 
 
    var popup = getCookie(popup); 
 
    if(popup){ 
 
//Dislay your alert 
 
     $('.container').append(
 
      ' <div class="alert alert-success" role="alert"> ' 
 
      + '<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>' 
 
      + '<strong>Success!</strong> You have been signed in successfully! </div>' 
 
     ); 
 

 
    } 
 
}); 
 

 
window.setTimeout(function() { 
 
    $(".alert").fadeTo(500, 0).slideUp(500, function(){ 
 
     $(this).remove(); 
 
     //Set the alert cookie to false 
 
     document.cookie = "popup=false; expires=Thu, 18 Dec 2090 12:00:00 UTC"; 
 
    }); 
 
}, 1500); 
 

 

 
//Function to get cookies 
 
function getCookie(cname) { 
 
    var name = cname + "="; 
 
    var ca = document.cookie.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 ""; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="container"> 
 
    
 
</div>

関連する問題