当前位置:首页 > 开发教程 > js/jQuery教程 >

JavaScript (基本教程)(11)

时间:2013-04-25 10:39 来源:网络整理 作者:采集侠 收藏

通常,您只需要设置前两项 "cookie 的名字=cookie 的值" 和 "结束时间" 即可。在设置结束时间的时候,您可以使用 Date 对象,但要注意格式,单位是毫秒。下边就是一个例子,在这个例子中,"结束时间" 被设置成从当

通常,您只需要设置前两项 "cookie 的名字=cookie 的值" 和 "结束时间" 即可。在设置结束时间的时候,您可以使用 Date 对象,但要注意格式,单位是毫秒。下边就是一个例子,在这个例子中,"结束时间" 被设置成从当前时间算起过任意多天 (此例设置的 "结束时间" 是 7 天后):

var days = 7;
var expdate = new Date();
expdate.setTime (expdate.getTime() + (86400 * 1000 * days)); 我们通过 document.cookie 属性来对 cookie 的数据进行存取。cookie 的格式是 "cookie",而所有的 cookie 都是保存在 document.cookie 属性中的,它们之间使用分号 ";" 分开,所以虽然您可以单独地设置各个 cookie,但却要通过切分操作才能得到各个 cookie 的值,请参照下边的示例。 的名字=cookie的值; expires=cookie的结束时间; path=路径

 

【经常用到的 cookie 函数】

为了让您有个好的开始,下边的三个函数分别提供了设置、删除、获取 cookie 的功能:

function setCookie (name, value, expires) { escape() 和 unescape() 是 JavaScript 的内建函数,它们用来将一些特殊字符转换成十六进制代码。通常情况下,cookie 中的名字、值都不能包含任何空格、逗号或分号。使用这两个函数可以将这一类的字符转换成合法的可供 cookie 使用的十六进制字符。

document.cookie = name + "=" + escape(value) +
"; expires=" + expires.toGMTString() + "; path=/";
}

function getCookie(name) {

var search;

search = name + "="
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length ;
end = document.cookie.indexOf(";", offset) ;
if (end == -1)
end = document.cookie.length;
return unescape(document.cookie.substring(offset, end));
}
else
return "";
}

function deleteCookie(name) {

var expdate = new Date();
expdate.setTime(expdate.getTime() - (86400 * 1000 * 1));
setCookie(name, "", expdate);
}

 

删除所有您不再使用的 cookie 是一个很好的习惯,因为客户端会限制您可以存储的 cookie 个数 (对于 Netscape 浏览器来说:每一个主机/域最多是 20 个 cookie,总共可以存储 300 个)。上边的删除 cookie 的函数将 cookie 的结束时间设置成前一天的时间,这样就可以达到删除的目的了。

看看这个 就知道上边函数的用法了。

注意:以下的部分使用 JavaScript 1.2 ,而且只运用于 Netscape 和 IE version 4.0 或者更高版本。

事件捕捉

我们在这个教程中已经学过了事件句柄 (event handler),Internet Explorer 浏览器几乎为每一个 HTML 标记提供了事件句柄,而 Netscape 却有所不同,虽然它也为很多 HTML 标记提供了事件句柄,但是一些事件必须通过别的方法来捕捉。

【在 Netscape 中捕捉事件】

在 Netscape 4 或者更高版本的浏览器中,你可以捕捉当前浏览窗口中 window、layer 或 document 级别的对象的事件。captureEvent() 方法可以完成此操作, 此方法指定想要捕捉的事件,然后在通过编写函数来处理此事件句柄。

下边的例子中我们通知 window 对象捕捉鼠标点击的事件:

window.captureEvents(Event.CLICK);
window.document.onClick = myClick; 请注意,我们在到 captureEvents() 方法中传送参数 Event.CLICK。这个事件对象 Event 包含了与事件有关的信息。而 Event.CLICK 是一个指向通常事件类型的对象实例,其它一些事件类型如下:

function myClick(even) {
...
}

 

  • CLICK - 当鼠标点击的时候触发此事件
  • MOUSEDOWN - 当鼠标被按下的时候触发此事件
  • MOUSEUP - 当鼠标被松开的时候触发此事件
  • MOUSEMOVE - 当鼠标移动的时候触发此事件
  • KEYPRESS - 当从键盘输入的时候触发此事件
  • KEYDOWN - 当按下键盘的时候触发此事件
  • KEYUP - 当松开键盘的时候触发此事件
  • 如果想捕捉更多的事件,您必须使用逻辑或运算符“|”来分割各个事件类型,如下边的代码所示:

    window.captureEvents(Event.MOUSEDOWN | Event.KEYDOWN);
    window.document.onMouseDown = myMouseDown;
    window.document.onKeyDown = myKeyDown; 我们将 event 对象传递给事先安排好的事件句柄 (即此事件的处理函数),这个对象包含了一些通常的时间数据,例如它的类型等等。

     

    【Internet Explorer 中的事件】

    在 Internet Explorer 中不需要传递 event 对象,因为通常的时间对象都是 window 对象的一个属性。不幸的是,IE 的这些属性和 Netscape 的却不尽相同。

    【编写具有兼容性的代码】

    幸运的是,这两种浏览器之间还是有共同的代码可以使用的,最重要的是能够使用代码将两种浏览器区分开来。你可以尝试使用一些对象来试探浏览器的类型,例如,你可以使用 document.layers 对象来试探,这个对象是 Netscape 支持的对象,而相对应的 document.all 对象则是只有 IE 才支持的对象, Netscape 则不支持:

    if (document.layers) { 如果所试探的对象不存在 (即当前的浏览器不支持),它的值为空 (null) ,这就促使 if 表达式的值为“假” (false)。这种方法也可以用来防止这两种浏览器不支持该对象的老版本试图执行这些代码。

    // 在此处编写 Netscape 支持的代码
    ...
    }

    else if (document.all) {

    // 在此处编写 IE 支持的代码
    ...
    }

    else {

    // 在此处编写 Netscape 和 IE 都支持的代码
    ...
    }

     

    看一下这个 将会对您又很大的帮助。例子中的代码可以在 Netscape 和 IE 两种浏览器中实现相同的效果。

    正则表达式

    正则表达式是用于模式匹配的,它提供了强大的字符串替换、转换以及搜索功能。

    Netscape 和 IE 在正则表达式对象的使用上有细微的不同,但是下边的代码却是通用的:

    var myRE = /匹配模式/标记;


    js/jQuery教程阅读排行

    最新文章