-1

重要な情報が表示される前に、ページの隅に拡大縮小して翻訳するというかわいい効果を作成しました。今、私はユーザーがページをリロードするたびにそれを見ることを余儀なくされることに気づきました。

ブラウザを最後に再起動してからの最初の訪問でのみアニメーションを実行するにはどうすればよいでしょうか。つまり、ユーザーが自分のドメイン以外のドメインからアクセスした場合です。

それが複雑すぎる場合は、アニメーションを一度実行してから、どういうわけかブラウザに二度と実行しないように通知したいと思います。または少なくともある日ではありません。

特定の非論理的ですが避けられない理由でCookieを使用しないので、セッション状態を適用しようとします。そこで、コードに次の変更を加えました。

構成:

<sessionState mode="InProc"></sessionState>

JS:

$(document).ready(function () {
var execute = 0; // 0 - no animation, 1 - full length animation
$("div.mainInfo img")
  .delay(400 * execute)
  .fadeIn(1000 * execute);
  ...
}

Page_Load:

Session["hazaa"] = "shazoo";
if(IsPostBack)
{
  if(Session["hazaa"] == "shazoo";
    DoTheCoolStuffToAffectJQueryOnTheClient(0);
}

したがって、hazaaが実際にshazooである場合、jQuery実行フラグを変更したいのですが、それでは...正確には、どうすればよいですか?!とにかくフラグは私を苛立たせます。なぜなら、作品をアップロードするたびに、それをオンにするのを忘れてしまうので、毎回静的なゼロになります。したがって、 DoTheCoolStuffToAffectJQueryOnTheClient(0)呼び出し作業を可能にするために行かなければならない場合、私は泣きません。

4

4 に答える 4

3

達成しようとしていることに、セッションまたはローカルストレージを使用できます。

https://developer.mozilla.org/en/DOM/Storage

セッションストレージはブラウザが再起動するまで持続し、ローカルストレージはクライアントがクリアするまで持続します

あなたがしなければならないすべてを使用することは、アニメーションで完全に値を保存することです。

sessionStorage.setItem("animeRan", 'yes');

次に、同じドメイン内にある限り、他のページのどこからでもアクセスできます。

sessionStorage.getItem("animeRan");

を使用していつでもそれを削除します

sessionStorage.removeItem("animeRan");

これは、ブラウザの互換性/サポートおよびWebストレージに関する詳細情報を確認できるサイトです。

http://caniuse.com/#feat=namevalue-storage

于 2012-07-30T16:53:21.713 に答える
1

ワイリーが彼の答えで言ったことへの追加として。実際にどのように使用されているかわからない場合のコード例を次に示します。

sessionStorage次のように使用します。

$(document).ready(function () {
  if (sessionStorage.getItem("animationDone") !== null) {
    $("div.mainInfo img")
      .delay(400 * execute)
      .fadeIn(1000 * execute);
      ...
      sessionStorage.setItem("animationDone", "done");
   }
}

これはブラウザに保存され、sessionStorageサーバー側とは何の関係もありません。

本当に自分で削除する必要がある場合sessionStorage.removeItem("animationDone");

sessionStorageブラウザセッションが終了すると、は期限切れになります。例:ブラウザを閉じるなど。

于 2012-08-03T10:47:37.427 に答える
0

最初のアニメーションが完了したときにCookieを作成できます。次に、ページが読み込まれるたびにそのCookieを読み取り、アニメーションが最近実行されたかどうかを確認します。小さな欠点は、Cookieを受け入れないユーザーでも毎回Cookieが表示されることですが、Cookieはかなり少ないと思います。

jQueryには、Cookieの管理を容易にするプラグインがあります。

上記のプラグインを使用すると、コードは次のようになります。

$(function () {
   if (!$.cookie("animationRun")) {
      $("#some-selector").animate(... , function () {
         // Let the cookie expire after one day
         $.cookie("animationRun", true, { expires: 1 });
      });
   }
});
于 2012-07-30T16:44:00.303 に答える
0

アニメーションを再生する前に、Cookieを設定し、そのCookieが存在するかどうかを確認する必要があります。

ここでの1つの欠点は、Cookieを受け入れないユーザーでも常にアニメーションが表示されることです。

于 2012-07-30T16:44:10.797 に答える