2016-08-23 10 views
0

私は現在、自分のウェブサイト(基本的にウェブサイトウォークスルー/ツアー)でEnjoyHint.jsを使用しています。ツアーを初期化する.jsファイルは、ページをリロードするたびに実行されます。つまり、ページを再読み込みしたり、もう一度訪問したときにツアーを表示していても、ツアーは表示され続けます。私はこのことをやめさせる方法がわからない。 .jsスクリプトを一度実行して、ユーザーがページを再読み込みまたは訪問したときに再度実行しないようにするだけです。javascriptが以前に実行されていて、それが[EnjoyHint.js]だった場合に再び実行されないことを覚えています

.jsファイルが以前にコンピュータ上で実行されていたかどうかを覚えておいて、それがあった場合は再度実行しないでください。誰かがウェブサイトを訪問した場合、以前に一度も見たことがある場合、ウェブサイトツアーを表示し続けることは望ましくありません。

ありがとうございます!

+3

何クッキーはどうですか? :) – Maju

+0

私はそれを確認することができるように最終的なコードを置くことができますか?私はこれを使用しようとしていますが、答えのコードをどこに置くべきかわかりません。私は新しいEnjoyHintのonStartを試しましたが、enjoyhint_instance.run()を呼び出さなければ動作しません。コンストラクターの外で – Patrick

答えて

1

この種のタスクでは、Cookieを使用するのが一般的です。そこplenty of librariesは、簡単な方法でそれらを使用することがありますが、これのために、あなたが本当に1は必要ありません:document.cookieが混乱することができるので、

// If the cookie is not set to 1 
if(document.cookie.indexOf('tourIsDone=1') < 0){ 
    //Launch the tour 
    launchTour(); 
    // Set the cookie (you can also do it once the tour is finished) 
    document.cookie = "tourIsDone=1"; 
} 

説明を

document.cookieを読んで、あなたが得ますすべてのクッキーを含む長い文字列:

cookie1=value1;cookie2=value2 

それはそこにないことを確認しますdocument.cookie.indexOf(nameOfCookie) < 0をチェック。

しかし、他の人を変更することなく、単一のクッキーを設定するために、あなただけ実行する必要があります。

document.cookie = "newCookie=newValue"; 
+1

わたしが間違っていると思ったら、ねえ、許してください。だから私は最初にクッキーを作成し、値を0に設定します: 'document.cookie =" tourIsDone = 0 ";'次に、if文を実行してクッキーが0に設定されているかどうかを確認します。クッキーの値を1に設定します。 'indexOf'は何をしますか? – Tahmid

+2

@Tahmid以前に1に設定されていた場合は、それをリセットして毎回ツアーを開始するため、0に初期化しないでください。私の答えに書いたコードは、あなたが必要とするものです。 'document.cookie =" tourIsDone = 0 ";'を実行すると、ブラウザがツアーが完了したことを "忘れる"(テストに適している)ようにしたい場合にのみ役に立ちます。 [indexOf()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_objects/String/indexOf)は、別のString内のStringを検索します。見つかった場合は、そのインデックスを返します。それがなければ、0より小さい '-1'を返します(したがって' if'条件 'indexOf(...)<0') – blex

+1

私はあなたのコードをコピーしました。何らかの理由でページがリロードされたときにツアーを表示します。私は 'launchTour();を' enjoyhint_instance.run();に置き換えました。 – Tahmid

0

2つの一般的な方法があります。使用する

  • Cookies
    ハーダーは、どこでも動作します。
  • Local Storage
    使いやすく、古いブラウザでは機能しない可能性があります。互換性シートhere
関連する問題