1019javascript学习资料的积累

来源:互联网 发布:铣床键槽下刀编程 编辑:程序博客网 时间:2024/05/29 07:36

1.如何取得一个长字符串中出现字符最多的次数和该字母

代码:

<script type="text/javascript">
var str ="adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串
var maxLength = 0; //命名一个变量放置字母出现的最高次数并初始化为0
var result = ''; //命名一个变量放置结果输入

while( str != '' ){ //循环迭代开始,并判断字符串是否为空
 alert(str);
  oldStr = str; //将原始的字符串变量赋值给新变量
  getStr = str.substr(0,1); //用字符串的substr的方法得到第一个字符(首字母)
  str = str.replace(new RegExp(getStr,"g"),"")

  if( oldStr.length-str.length > maxLength ) { //判断原始的字符串的长度减去替代后字符串长度是否大于之前出现的最大的字符串长度
 maxLength = oldStr.length-str.length; //两字符串长度相减得到最大的字符串长度
 result = getStr + "=" + maxLength //返回最大的字符串结果(字母、出现次数)
 }
}

alert(result) //弹出结果==》出现的结果是f=12


</script> 

2.javascript窗口对象

frames 表示当前窗口中所有frame对象的数组
status 表示浏览器的状态行信息
defaultstatus 表示浏览器的状态行信息
history 表示当前窗口的历史记录,这可以引用在网页导航中
closed 表示当前窗口是否关闭的逻辑值
document 表示当前窗口中显示的当前文档对象
location 表示当前窗口中显示的当前URL的信息
name 表示当前窗口对象的名字
opener 表示打开当前窗口的父窗口
parent 表示包含当前窗口的父窗口
top 表示一系列嵌套的浏览器中的最顶层的窗口
self 表示当前窗口
length 表示当前窗口中的帧个数
open(url,window name,[,window features]) 创建一个新的浏览器窗口
close() 关闭一个浏览器窗口
alert(message) 弹出一个警示对话框
confirm(message) 弹出一个确认对话框
prompt(message,defaultmessage) 弹出一个提示对话框
print() 相当于浏览器工具栏中的打印按钮
blur() 将被引用窗口放到所有其他打开窗口的后面
focus() 将被引用窗口放到所有其他打开窗口的前面
moveTo(x,y) 将窗口移到指定的坐标处,x和y的单位为象素
resizeBy(horiz,vert) 按照给定的位移量重新设定窗口的大小,horiz和vert以象素为单位
scroll(x,y) 将窗口滚动到指定的坐标位置
scrollBy(horiz,vert) 按照给定的位移量滚动窗口
setTimeout(expression,time) 设置在一定时间后自动执行expression代表的代码
setInterval(expression,time,[args]) 设置一个时间间隔,使expression代码可以周期性地被执行
clearTimeout(timer) 取消由setTimeout设定的定时操作
clearInterval(timer) 取消由setInterval设定的定时操作
附:window features的参数
height 定义以像素为单位的窗口的高度
width 定义以像素为单位的窗口的宽度
left 定义以像素为单位的窗口距离屏幕左边的位置
top 定义以像素为单位的窗口距离屏幕顶部的位置
toolbar 定义是否有标准工具栏
location 定义是否显示url
directories 定义是否显示目录按钮
status 定义是否有状态栏
menubar 定义是否有菜单栏
scrollbars 定义当文档内容大于窗口时是否有滚动条
resizable 定义窗口大小是否可以改变
outerheight 定义以像素为单位的窗口外部高度
outerwidth 定义以像素为单位的窗口外部宽度
本文转自建站学  http://www.jzxue.com ,转载请注明出处。

3.javascript与javaApplet的结合使用

首先我们编写一个Java Applet,就叫HelloWorld1
import java.awt.*;

import java.applet.*;
public class HelloWorld1 extends Applet
{
public String text="Hello World!";//请注意此处的public
public void paint(Graphics g)
{g.drawString(text,20,20);}
}
然后编写一个html静态网页

<html>
<head><title>例子</title></head>
<body>
<script language="JavaScript">
<!--
function SetText()
{
document.app.text="世界你好!";
document.app.repaint();//也请注意此句.
}
//-->
</script>
Java Script与Java Applet的综合运用例一<br>
<applet code="HelloWorld1.class" width="100" height="28" name="app">
</applet>
<form>
<input type="button" value="请点击这里" onclick="SetText()">
</form>
</body>
</html>
用浏览器打开example.html会出现一个显示“Hello World!”的Java Applet以及一个按钮“请点击这里”。我们点一下按钮,你会发现“Hello World!”变成了“世界你好”。这说明Java Script已经成功的改变了HelloWorld1中text的内容。
你也许会问在在HelloWorld1.java中为什么要在text前加public??
还有Java Script中那行:"document.app.repaint();"是什么意思??
是这样的:
和C++一样,在Java中缺省状态下,对象的属性是private,要让Java Script访问到Java Applet中的对象,必须设置为public(包括函数、变量和类)。
前一句document.app.text="世界你好!"仅改变了text的值,要使它反映在浏览器上,必须要让HelloWorld1刷新它的显示,因此要调用HelloWorld1中的repaint()函数。你也许又要问了:我在HelloWorld1.java中并没有看到repaint()函数呀? HelloWorld1是Applet的子类,我们调用repaint()其实是调用类Applet中的repaint()函数。当然我们并不推荐在外部直接修改Applet内的变量,更安全的方法是提供public函数来读取和改变内部变量。

3.javascript与javaApplet结合的实例

上次我们介绍了使用Java Script改变Java Applet中的变量的方法(严格来讲应该是改变了String类,不过可以简单的把String类看成是变量); 我们说直接在Java Script中改变Java Applet中的变量是不可取的(至少是不推荐的)。 因为Java Applet本身并不知道变量被改变, 这会给Applet程序带来隐患(还记得我们不得不调用repaint()函数来刷新显示吗?)。 更为积极的做法是在Java Applet中提供public函数支持对内部对象的存取。下面我们对HelloWorld1.java和example.html进行改进,介绍如何在Java Script中调用Java Applet的函数:
import java.awt.*;

import java.applet.*;
public class HelloWorld2 extends Applet//主类名必须与文件名相同
{
String text="Hello World!";//去掉text的public属性
public void paint(Graphics g)
{g.drawString(text,20,20);}
//这里增加一个public函数
public void SetString(String NewString)
{
text=NewString;
repaint();//自动调用repaint()函数
}
}

编译后生成HelloWorld2.class;
编写一个静态网页:

<head><title>例子</title></head>
<body>
<script language="JavaScript">
<!--
function SetText()
{
document.app.SetString("世界你好!");
//这里不再需要repaint()函数了
}
//-->
</script>
Java Script与Java Applet的综合运用例二<br>
<applet code="HelloWorld2.class" width="100" height="28" name="app">
</applet>
<form>
<input type="button" value="请点击这里" onclick="SetText()">
</form>
</body>
</html>
同样打开example2.html点击按钮后你会发现"Hello World!"变成了"世界你好!",说明调用函数成功

4.javascript与XML 结合实现翻页的功能

代码:

<xml id="users">
<userGroup>
  <user id="1">
    <userid>user 1</userid>
    <name>name 1</name>
  </user>
  <user id="2">
    <userid>user 2</userid>
    <name>name 2</name>
  </user>
  <user id="3">
    <userid>user 3</userid>
    <name>name 3</name>
  </user>
  <user id="4">
    <userid>user 4</userid>
    <name>name 4</name>
  </user>
  <user id="5">
    <userid>user 5</userid>
    <name>name 5</name>
  </user>
  <user id="6">
    <userid>user 6</userid>
    <name>name 7</name>
  </user>
  <user id="7">
    <userid>user 7</userid>
    <name>name 7</name>
  </user>
  <user id="8">
    <userid>user 8</userid>
    <name>name 8</name>
  </user>
  <user id="9">
    <userid>user 9</userid>
    <name>name 9</name>
  </user>
</userGroup>
</xml>
<table id="datatable" datasrc="#users" DATAPAGESIZE="3" width="400" border="1">
<thead>
    <th>数据 userid</th>
    <th>数据 name</th>
    <th>属性 id</th>
</thead>
<tr>
    <td><span datafld="userid"></span></td>
    <td><span datafld="name"></span></td>
    <td><span datafld="id"></span></td>
</tr>
</table>
<button onclick="document.all.datatable.previousPage()">Previous Page</button>
<button onclick="document.all.datatable.nextPage()">Next Page</button>
     所有的代码是在一个页面中。如果你的xml在外部,则要引用xml,如<xml id="users" src="user.xml">
</xml>

5.javascript操作cookies

1. 什么是 Cookies?
2. Cookie 的构成
3. 操纵 Cookies
4. Cookie 怪兽

什么是Cookies?

你会问,什么是cookies呢? cookie 是浏览器保存在用户计算机上的少量数据。它与特定的WEB页或WEB站点关联起来,自动地在WEB浏览器和WEB服务器之间传递。

比如,如果你运行的是Windows操作系统,使用Internet Explorer上网,那么你会发现在你的“Windows”目录下面有一个子目录,叫做“Temporary Internet Files”。如果你有空看看这个目录,就会发现里面有一些文件,文件名称看起来就象电子邮件地址。比如在我机器上的这个目录里,就有 “jim@support.microsoft.com”这样的文件。这是一个cookie 文件,这个文件从哪来呢?猜一猜,它来自微软的支持站点。顺便说一句,这不是我的电子邮件地址,特此澄清。

对于管理细小的、不重要的、不想保存在中央数据库里的细节信息,Cookies 是个很不错的方案。(这不是说大家的名字不重要。)比如,目前网站上不断增长的自定义服务,可以为每个用户定制他们要看的内容。如果你设计的就是这样一个站点,那么你怎么来管理这样的信息:一个用户喜欢绿色的菜单条,而另一个喜欢红色的。确实是个累人的问题。不过,这样的信息,可以很安全地记录到cookie,并保存在用户的计算机上,而你自己的数据库空间可以留给更长久更有意义的数据。

FYI: Cookies 对于安全用途,通常很有用。我不想在此就这一问题过于深入,只是提供一个示例,可以看到如何使用在一段时间之后过期的cookies来保证站点安全:

1. 使用用户名和口令,通过 SSL 登录。
2. 在服务器的数据库里检查用户名和口令。如果登录成功,建立一个当前时间标签的消息摘要 (比如 MD5) ,并把它保存在cookie和服务器数据库里。把用户的登录时间保存在服务器数据库里面的用户记录里。
3. 在进行每个安全事务时(用户处于登录状态的任何事务),把cookie的消息摘要和保存在服务器数据库里的摘要进行比较,如果比较失败,就把用户引导到登录界面。
4. 如果第3步检查通过,那么检查当前时间和登录时间之音经过的时间是否超过允许的时间长度。如果用户已经超时,那么就把用户引到登录界面。
5. 如果第3步和第4步都通过了,那么把登录时间重新设置成当前时间,允许事务发生。那些需要你登录的安全站点,可能多数使用的都是和这里介绍的类似的方法。
Cookie的构成

Cookies最初设计时,是为了CGI编程。但是,我们也可以使用Javascript脚本来操纵cookies。在本文里,我们将演示如何使用Javascript脚本来操纵cookies。(如果有需求,我可能会在以后的文章里介绍如何使用Perl进行cookie管理。但是如果实在等不得,那么我现在就教你一手:仔细看看CGI.pm。在这个CGI包里有一个cookie()函数,可以用它建立cookie。但是,还是让我们先来介绍cookies的本质。

在Javascript脚本里,一个cookie 实际就是一个字符串属性。当你读取cookie的值时,就得到一个字符串,里面当前WEB页使用的所有cookies的名称和值。每个cookie除了name名称和value值这两个属性以外,还有四个属性。这些属性是: expires过期时间、 path路径、 domain域、以及 secure安全。

Expires – 过期时间。指定cookie的生命期。具体是值是过期日期。如果想让cookie的存在期限超过当前浏览器会话时间,就必须使用这个属性。当过了到期日期时,浏览器就可以删除cookie文件,没有任何影响。

Path – 路径。指定与cookie关联的WEB页。值可以是一个目录,或者是一个路径。如果http://www.jzxue.com/html/java/建立了一个cookie,那么在http://www.jzxue.com/html/java/目录里的所有页面,以及该目录下面任何子目录里的页面都可以访问这个cookie。这就是说,在http://www.jzxue.com/html/java/stories/articles 里的任何页面都可以访问http://www.jzxue.com/html/java/index.html建立的cookie。但是,如果http://www.jzxue.com/html/asp/ 需要访问http://www.jzxue.com/html/java/index.html设置的cookes,该怎么办?这时,我们要把cookies 的path属性设置成“/”。在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。现在看另一个例子:如果想让 http://www.jzxue.com/devhead/filters/ 和http://www.jzxue.com/devhead/stories/共享cookies,就要把path设成“/devhead”。

Domain – 域。指定关联的WEB服务器或域。值是域名,比如jzxue.com。这是对path路径属性的一个延伸。如果我们想让 catalog.mycompany.com 能够访问shoppingcart.mycompany.com设置的cookies,该怎么办? 我们可以把domain属性设置成“mycompany.com”,并把path属性设置成“/”。FYI:不能把cookies域属性设置成与设置它的服务器的所在域不同的值。

Secure – 安全。指定cookie的值通过网络如何在用户和WEB服务器之间传递。这个属性的值或者是“secure”,或者为空。缺省情况下,该属性为空,也就是使用不安全的HTTP连接传递数据。如果一个 cookie 标记为secure,那么,它与WEB服务器之间就通过HTTPS或者其它安全协议传递数据。不过,设置了secure属性不代表其他人不能看到你机器本地保存的cookie。换句话说,把cookie设置为secure,只保证cookie与WEB服务器之间的数据传输过程加密,而保存在本地的cookie文件并不加密。如果想让本地cookie也加密,得自己加密数据。
操纵Cookies

请记住,cookie就是文档的一个字符串属性。要保存cookie,只要建立一个字符串,格式是name=<value>(名称=值),然后把文档的 document.cookie 设置成与它相等即可。比如,假设想保存表单接收到的用户名,那么代码看起来就象这样:

document.cookie = "username" + escape(form.username.value);

在这里,使用 escape() 函数非常重要,因为cookie值里可能包含分号、逗号或者空格。这就是说,在读取cookie值时,必须使用对应的unescape()函数给值解码。

我们当然还得介绍cookie的四个属性。这些属性用下面的格式加到字符串值后面:

name=<value>[; expires=<date>][; domain=<domain>][; path=<path>][; secure]

名称=<值>[; expires=<日期>][; domain=<域>][; path=<路径>][; 安全]

<value>, <date>, <domain> 和 <path> 应当用对应的值替换。<date> 应当使用GMT格式,可以使用Javascript脚本语言的日期类Date的.toGMTString() 方法得到这一GMT格式的日期值。方括号代表这项是可选的。比如在 [; secure]两边的方括号代表要想把cookie设置成安全的,就需要把"; secure" 加到cookie字符串值的后面。如果"; secure" 没有加到cookie字符串后面,那么这个cookie就是不安全的。不要把尖括号<> 和方括号[] 加到cookie里(除非它们是某些值的内容)。设置属性时,不限属性,可以用任何顺序设置。

下面是一个例子,在这个例子里,cookie "username" 被设置成在15分钟之后过期,可以被服务器上的所有目录访问,可以被"mydomain.com"域里的所有服务器访问,安全状态为安全。

// Date() 的构造器设置以毫秒为单位
// .getTime() 方法返回时间,单位为毫秒
// 所以要设置15分钟到期,要用60000毫秒乘15分钟
var expiration = new Date((new Date()).getTime() + 15 * 60000);
document.cookie = "username=" + escape(form.username.value)+ "; expires ="
+ expiration.toGMTString() + "; path=" + "/" + "; _
domain=" + "mydomain.com" + "; secure";

读取cookies值有点象个小把戏,因为你一次就得到了属于当前文档的所有cookies。

// 下面这个语句读取了属于当前文档的所有cookies
var allcookies = document.cookie;

现在,我们得解析allcookies变量里的不同cookies,找到感兴趣的指定cookie。这个工作很简单,因为我们可以利用Javascript语言提供的扩展字符串支持。

如果我们对前面分配的cookie "username" 感兴趣,可以用下面的脚本来读取它的值。

// 我们定义一个函数,用来读取特定的cookie值。
function getCookie(cookie_name)
{
var allcookies = document.cookie;
var cookie_pos = allcookies.indexOf(cookie_name);

// 如果找到了索引,就代表cookie存在,
// 反之,就说明不存在。
if (cookie_pos != -1)
{
// 把cookie_pos放在值的开始,只要给值加1即可。
cookie_pos += cookie_name.length + 1;
var cookie_end = allcookies.indexOf(";", cookie_pos);

if (cookie_end == -1)
{
cookie_end = allcookies.length;
}

var value = unescape(allcookies.substring(cookie_pos, cookie_end));
}

return value;
}

// 调用函数
var cookie_val = getCookie("username");

上面例程里的 cookie_val 变量可以用来生成动态内容,或者发送给服务器端CGI脚本进行处理。现在你知道了使用Javascript脚本操纵cookies的基本方法。但是,如果你跟我一样,那么我们要做的第一件事,就是建立一些接口函数,把cookies处理上的麻烦隐藏起来。不过,在你开始编程之前,稍候片刻。这些工作,早就有人替你做好了。你要做的,只是到哪去找这些接口函数而已。

比如,在David Flangan的Javascript: The Definitive Guide 3rd Ed.这本书里,可以找到很好的cookie应用类。你也可以在Oreilly的WEB站点上找到这本书里的例子。本文最后的链接列表里,有一些访问这些cookie示例的直接链接。

 

Cookies 怪兽

因为某些原因Cookies 的名声很不好。许多人利用cookies做一些卑鄙的事情,比如流量分析、点击跟踪。Cookies 也不是非常安全,特别是没有secure属性的cookies。不过,即使你用了安全的cookies,如果你和别人共用计算机,比如在网吧,那么别人就可以窥探计算机硬盘上未加密保存的cookie文件,也就有可能窃取你的敏感信息。所以,如果你是一个WEB开发人员,那么你要认真考虑这些问题。不要滥用cookies。不要把用户可能认为是敏感的数据保存在cookies里。如果把用户的社会保险号、信用卡号等保存在cookie里,等于把这些敏感信息放在窗户纸下,无异于把用户投到极大危险之中。一个好的原则是,如果你不想陌生人了解你的这些信息,那就不要把它们保存在cookies里。

另外,cookies还有一些实际的限制。Cookies保留在计算机上,不跟着用户走。如果用户想换计算机,那么新计算机无法得到原来的cookie。甚至用户在同一台计算机上使用不同浏览器,也得不到原来的cookie:Netscape 不能读取Internet Explorer 的cookies。

还有,用户也不愿意接受cookies。所以不要以为所有的浏览器都能接受你发出的cookies。如果浏览器不接受cookies,你要保证自己的WEB站点不致因此而崩溃或中断。

另外WEB 浏览器能保留的cookies不一定能超过300个。也没有标准规定浏览器什么时候、怎么样作废cookies。所以达到限制时,浏览器能够有效地随机删除cookies。浏览器保留的来自一个WEB服务器上的cookies,不超过20个,每个cookie的数据(包括名称和值),不超过4K字节。(不过,本文里的cookie尺寸没问题,它只占了12 K字节,保存在3个3 cookies里。)

简而言之,注意保持cookie简单。不要依赖cookies的存在,不要在每个cookie里保存太多信息。不要保存太多的cookes。但是,抛除这些限制,在技巧高超的WEB管理员手里,cookie的概念是一个有用的工具。

外部链接
每个 Javascript 程序员都应当有一份Javascript: David Flanagan 的The Definitive Guide。 这本书里找到cookie 类例程可以帮助你把不止一个变量编码到单一的cookie,克服掉“每个WEB服务器20 个cookies的限制”。

 


 

 


 

 

 

 

 

 

 

 

原创粉丝点击