【问题标题】:Understanding cookies (using jquery cookie plugin.)了解 cookie(使用 jquery cookie 插件。)
【发布时间】:2012-02-15 23:07:45
【问题描述】:

我正在开发一个项目,该项目有一个 Flash 视频,一旦加载到页面上就会自动播放。我的客户希望它仅在有人第一次访问该页面时自动播放。随后的访问(在同一会话中)将加载视频,但保持暂停。

Flash 视频有一个 JS 函数,我可以调用它来暂停或播放视频。所以我的想法是在用户访问页面后设置一个 cookie,并让它在后续访问时触发回调。

//wait until everything has loaded
$(window).load(function(){

    //set a cookie 
    $.cookie('welcome_cookie', 'welcome');

    //check for the cookie and call the pause function
    if($.cookie('welcome_cookie')){
        controlPlayback('pause');
    }
});

这可行,但它会在第一次暂停视频...如何才能使播放功能仅在返回此页面时触发?

【问题讨论】:

  • 只是颠倒顺序。先测试再添加cookie。

标签: javascript jquery cookies


【解决方案1】:

第一次检查后只需切换顺序设置cookie即可;

//wait until everything has loaded
$(window).load(function(){

    //check for the cookie and call the pause function
    if($.cookie('welcome_cookie')){
        controlPlayback('pause');
    }

    //set a cookie 
    $.cookie('welcome_cookie', 'welcome');
});

您可能不必在每次页面加载时都设置 cookie,所以如果没有设置,为什么不设置 cookie;

//check for the cookie and call the pause function
if($.cookie('welcome_cookie')){
    //pause video player
    controlPlayback('pause');
} else {
  //set a cookie 
  $.cookie('welcome_cookie', 'welcome');
}

【讨论】:

  • 我有 $(window).load) 的原因是我在尝试调用播放函数之前知道 Flash 播放器已加载。否则我会得到一个未定义的方法错误。
【解决方案2】:

为什么你需要一个 cookie,cookie 会分别在每个请求和响应中传输到服务器和从服务器传输。所以你在服务器上来回发送你真的不需要的数据。您真正需要的是本地存储。

$(window).load(function(){

    //If not first visit then pause
    if(localStorage['not_first_visit']){
        controlPlayback('pause');
    }

    //Set  
    localStorage('not_first_visit')=true;
});

【讨论】:

  • 浏览器对localStorage的支持是什么?只要它适用于 IE7+,我就愿意尝试这种方法。
  • IE7+绝对支持localStorage。
  • 等一下,根据this pageIE7不支持localStorage。
  • 嗯……我会记住这一点,以用于未来不需要 IE7 支持的项目。 :) 感谢您的见解!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2011-08-19
  • 2023-03-17
相关资源
最近更新 更多