`
decentway
  • 浏览: 159160 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

YUI3:Cooke

阅读更多

YUI Cookie工具为与cookies交互提供了一个简单的API,包含subcookies的创建和处理。

关于HTTPOnly Cookies:暂时不支持。

使用Cookie工具

创建Cookies

很简单:

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y) {
    Y.Cookie.set("name", "value");
});

 这个例子创建了一个叫做"name"值为"value"的cookie。因为这个cookie所有的设置都是默认的,所有它也是一个会话cookie(

session是保存在内存中 跟进程是同时存在的 会话cookie 但是此时服务器端还保存有session文件 需要设置时间来删除session文件

 

set()有第三个参数,它用来创建一个长期的cookie,你也可以通过提供一个Date对象来指定截止时间。

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y) {
    Y.Cookie.set("name", "value", { expires: new Date("January 12, 2025") });
});

 你可以通过设置路径或者域名信息来限制cookie的访问。

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y) {
    Y.Cookie.set("name", "value", {
        path: "/",           //所有页面都可以访问
        domain: "yahoo.com"   //yahoo.com以及其他yahoo.com下的页面都可以访问
    });
});

 "path","domain"参数不一定要全部设置,也可以独立设置。

最后一个可选参数是"secure",它指出cookie只能用HTTPS协议,通过SSL来访问。

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y){
    Y.Cookie.set("name", "value", { secure: true });
});

 一个更高级的可选参数:"raw".暂不研究。

读Cookies

使用get()方法获取cookies(必须是当前页面可以访问的),如果cookie不存在,get()返回null

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y){
    var value = Y.Cookie.get("name");
});

 这个例子中获取的名为"name"的值。默认情况下,get()将返回字符串(cookie存在)或者null(cookie 不存在)。你可以通过第二个参数改变返回值。例如为了返回数字,你可以传递一个Number()函数。

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y){
    var value = Y.Cookie.get("age", Number);
});

 

 这这个代码中,返回值是数字类型的(如果cookie不存在,返回值依然为null)。还有其他函数Boolean(),Date。或者你也可以自定义你的转换函数:

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y){
    var value = Y.Cookie.get("code", function(stringValue){
        return parseInt(stringValue, 16);   //转换成16进制。
    });
});

 转换函数只接受一个参数——cookie值,也必须返回一个值。如果cookie不存在,转换函数不会执行。

a raw cookie 不讨论。

删Cookies

remove()方法有两个参数:要删除的cookie名和一个可选的cookie选项对象。一个创建时用指定选项创建的对象,删除时也只能用同样的选项。例如,一个用yahoo.com domain属性创建的cookie也只能被yahoo.com domain选项删除。

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y){
    //delete the cookie named "code"
    Y.Cookie.remove("code");

    //delete the cookie named "info" on the "yahoo.com" domain
    Y.Cookie.remove("info", { domain: "yahoo.com" });

    //delete a secure cookie named "username"
    Y.Cookie.remove("username", { secure: true });                    
});

 

Subcookies

每一个浏览器对于一个domain都有一个限制数,这对于一个有很多子网站的domian会出现问题。因为cookie的名值对一般都不会超过所限制的比特数,所有可以在一个cookie里面存储多个subcookies。

一个subcookie有如下格式:

cookiename=name1=value1&name2=value2&name3=value3

 

setSub()方法来设置subcookies.有四个参数:cookie name,subcookie name,subcookie value,一个可选的配置对象。

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y){

    //set a cookie named "name" with a subcookie named "subname" whose value is "value"
    Y.Cookie.setSub("name", "subname", "value");

    //set a second subcookie on "name", with a name of "subname2" and a value of "value2"
    Y.Cookie.setSub("name", "subname2", "value2");

    //set subcookie on the "yahoo.com" domain
    Y.Cookie.setSub("info", "age", 22, { domain: "yahoo.com" });

    //set subcookie to a secure cookie named "user"
    Y.Cookie.setSub("user", "name", "ace123", { secure:true });                        
});

 setSubs()设置所有的subcookie内容。

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y){

    var data = {
        name: "ace123",
        age: 22,
        track: true
    };                    

    //set a cookie named "user" with subcookies
    Y.Cookie.setSubs("user", data);

});

 注意:setSubs方法会完全重写cookie

 

获取subcookie值的两个方法:

getSub(),转换函数同上面的get();

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y){

    //get subcookie
    var stringValue = Y.Cookie.getSub("name", "subname");

    //get subcookie and convert to number
    var numberValue = Y.Cookie.getSub("user", "age", Number);

    //get subcookie and convert from hex code to decimal number
    var integerValue = Y.Cookie.getSub("settings", "bgcolor", function(stringValue){
        return parseInt(stringValue, 16);   //create a number from a hexadecimal code
    });
    
});

 第二个方法是:getSubs();

它只有一个参数:cookie的name

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y){

    //get all subcookies
    var data = Y.Cookie.getSubs("name");
    var subValue = data.subname;

    //get all subcookies
    var user = Y.Cookie.getSubs("user");
    var userName = user.name;
    
});

 

删除subcookies:removeSub();

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y){

    //set subcookie on the "yahoo.com" domain
    Y.Cookie.setSub("info", "age", 22, { domain: "yahoo.com" });

    //remove the subcookie
    Y.Cookie.removeSub("info", "age", { domain: "yahoo.com" });                        
});

 在默认情况下,如果subcookies全部删除了,主cookie依然存在,如果想在主cookie为空时删除主cookie,则指定一个removeIfEmpty选项。

//create a YUI instance and use the cookie module.
YUI().use('cookie', function(Y){

    //remove the subcookie
    Y.Cookie.removeSub("info", "age", { removeIfEmpty: true });                        
});

 

 

 

分享到:
评论

相关推荐

    JavaScript YUI 2.8: DataTable jquery form 异步请求显示数据分页

    JavaScript YUI 2.8 和 DataTable 是 Yahoo! UI Library 的一部分,它提供了一种强大的方式来展示和操作表格数据。jQuery form 插件则用于处理表单的异步提交,通常用于实现无刷新的数据更新。在本文中,我们将深入...

    generator-yui3:YUI3项目脚手架

    (尚未稳定)YUI3项目的Yeoman发电机安装sudo npm install -g generator-yui3建立专案yo yui3 awesomeProject.generator-yui3.json 允许您覆盖默认配置{ "project" : "awesomeProject", "lang" : ["fr", "en", "es",...

    yui3-master.zip

    《深入理解YUI3:基于yui3-master.zip的探讨》 YUI(Yahoo! User Interface Library)是由雅虎公司开发的一套开源JavaScript库,它为Web开发者提供了丰富的功能和工具,以创建交互性强、性能优秀的网页应用。YUI3是...

    yui_2.9.0用于javascript基础教程

    适合图灵程序设计丛书web开发系列-javascript基础教程的学习使用

    YUI类库2.9.0下载download

    YUI 2 is a JavaScript and CSS library with more than 30 unique components including low-level DOM utilities and high-level user-interface widgets. Currently at version 2.9.0, YUI 2 is robust, proven, ...

    yui_2.9.0前端UI

    YUI 库,全称Yahoo! UI Library。是一组工具和控件,用JavaScript写成, 为的是用DOM 脚本,DHTML和AJAX等技术创建丰富的网页交互式应用程序。 YUI 基于BSD协议,对所有的使用方式都是免费的。YUI 项目包括YUI 库和两...

    YUI3 中tree的两种实现

    这篇博文“YUI3 中tree的两种实现”探讨了如何在YUI3中创建和管理树形结构。 1. **YUI3 TreeView组件** YUI3 TreeView组件是YUI3核心库的一部分,它允许开发者创建交互式的树结构。这个组件支持节点的添加、删除、...

    yui2.9

    3. **数据管理**:YUI 2.9提供了DataSource组件,用于处理数据请求、缓存和格式化。配合Connection Manager,可以实现与服务器的数据交换,支持JSON、XML等多种数据格式。 4. **国际化与本地化**:YUI 2.9支持多...

    YUI3 dialog组件

    **YUI3 Dialog组件详解** YUI3是Yahoo!推出的一款强大的JavaScript库,它提供了丰富的UI组件和工具,用于构建高性能、跨平台的Web应用程序。Dialog组件是YUI3中的一个重要部分,它允许开发者创建可交互的弹出窗口,...

    yuitest:YUI测试

    YUITest JavaScript测试库 建造 要构建JavaScript文件,请在javascript目录中运行此文件: ant all 构建一个NPM软件包 要构建npm软件包(输出到javascript / build / yuitest / npm),请在javascript目录中运行此...

    yui 资源包

    3. **事件处理**:YUI的事件系统强大,支持事件绑定、解绑、事件冒泡等,使得用户交互编程简单易行。 4. **动画效果**:通过Transition和Anim模块,可以轻松实现平滑的CSS3动画和JavaScript动画效果。 5. **数据绑定...

    YuiAPI:一个浏览器API测试客户端,API文档生成器,支持chromefirefox新版edge

    YuiAPI YuiAPI是一个浏览器扩展,非常简单易用的API调试客户端,你可以随意的使用它。 目录 3.1 3.2 4.1 4.2 4.3 4.4 当前版本 v1.1.2 支持浏览器 边缘 火狐浏览器 Chrome 边缘 最新版本 最新版本 安装 安全的...

    yui3-3.17.2最新版

    在实际使用YUI 3.17.2时,开发者可以通过`yui3-3.17.2`这个压缩包文件获取所有必要的资源。这个压缩包中包含了库的源码、示例、文档和其他辅助工具。开发者可以按照项目需求,选择合适的模块和组件进行集成。 在...

    YUI 入门教程YUI 入门教程YUI 入门教程

    YUI,全称为Yahoo! User Interface Library,是一个开源的JavaScript库,主要用于构建富互联网应用程序(RIA)。本教程将深入介绍YUI的基础知识和关键特性,帮助开发者快速入门。 首先,YUI提供了一系列强大的DOM...

    YAHOO yui2.7 文档+ 代码+例子

    同时,YUI的后续版本(如YUI 3)引入了更多改进和新特性,保持了YUI在前端开发领域的竞争力。 总之,YUI 2.7作为一个成熟的JavaScript框架,为开发者提供了强大的工具集,帮助他们高效地构建现代Web应用。其丰富的...

    YUI3.6文档及示例

    1. **模块系统**:YUI3引入了模块化设计,允许开发者按需加载组件,降低页面的初始化时间。模块可以通过`YUI.use()`方法来加载,实现了代码的异步加载和依赖管理。 2. **事件系统**:YUI的事件处理机制强大且灵活,...

    从YUI2到YUI3看前端的演变

    从YUI2到YUI3看前端的演变

    YUI3.7.3 最新版本 带API

    1. **模块系统**:YUI3引入了CommonJS风格的模块系统,允许开发者通过`YUI.use()`方法加载所需模块,实现按需加载,减少页面初始化时的加载量。 2. **事件处理**:YUI3提供了强大的事件系统,支持DOM事件、自定义...

    从YUI2到YUI3看前端的演变 pdf

    YUI3 引入了粒度更细的模块管理方式,通过异步 HTTP 请求加载模块、然后执行回调来加载和使用模块。现场有很多人提出疑问,大家无非关心的是“效率”二字。个人以为在现阶段,这种方式有一点激进,否能为广大用户所...

Global site tag (gtag.js) - Google Analytics