DHTML应用程序的状态管理

典型的Internet应用程序是没有状态的。在浏览器和Web服务器之间传送请求和响应的协议是不能在每个请求之间保持信息的,因此,当收到一个新的请求时协议不能记住以前请求的任何信息。对于DHTML应用程序一般也是这样的,浏览器在操作之间通常不保存详细的信息。

由于协议本身不能保持状态,必须使用其它的手段来保存在请求之间需要应用程序记住的信息。在一个DHTML应用程序中,使用GetProperty和PutProperty函数保存和获取数据。只要最终用户的Web浏览器窗口是打开的,这些函数就保存着数据。

注意 GetProperty和PutProperty函数是modDHTML模块的一部分,当使用DHTML Application模板创建一个新工程时该模块被添加到您的工程。

使用PutProperty函数来保存信息。在这个函数中,标识要在其中保存信息的属性名和要保存的值。浏览器在一个客户端的cookie 中保存指示的数据。PutProperty 函数以一种比直接在您的事件过程中对cookie 编程更简单的方法显露 cookie 功能性。

使用GetProperty函数获取信息。在这个函数中,标识要从客户端cookie 中获取数据的一个存在的属性名。可以将该值指定给页面上的字段,或在计算中使用它。

示例:保存和获取状态

例如,假设您要生成一个越过页面的边界保存和获取数据的简单应用程序。这个应用程序将由两个页面组成:一个保存数值、一个获取数值。

在应用程序的第一个页面中包含一个文本字段,最终用户可以输入一个值到该字段,还包含一个将该值保存到cookie 的按钮。叫做StoreButton1按钮的代码应有如下的形式:

Private Function StoreButton1_onclick() As Boolean
PutProperty BaseWindow.Document, "Property1", TextField1.Value
End Function

在同一应用程序的第二个页面中包含一个按钮,当单击该按钮时从cookie 中获取该属性。称为“GetButton1”按钮的代码,应有如下的形式:

Private Function GetButton1_onclick() As Boolean
MyValue.innerText = "The value of the property is " & _
GetProperty(BaseWindow.Document, "Property1")
End Function

这个函数利用动态HTML的 innerText 属性,来用包含获取属性的一个句子替换一个叫做“MyValue”DIV标记的内容。