-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);
  ...
}

页面加载:

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

这是一个您可以检查浏览器兼容性/支持的网站以及有关网络存储的更多信息

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

于 2012-07-30T16:53:21.713 回答
1

作为wirey在他的回答中所说的补充。如果您不确定它的实际使用方式,这里是一个代码示例。

您将使用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 的用户仍然每次都会看到它,但我相信他们很少。

对于 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 是否存在。

这里的一个缺点是,不接受您的 cookie 的用户仍将始终看到动画。

于 2012-07-30T16:44:10.797 回答