快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

创建弹出式“每日提示”窗口

* 本例程将会用到Application对象、数据库、JavaScript、以及文件操作。

首先,我们列一下本例程将涉及的内容:


1) 我们将创建一个用于显示“每日提示”的弹出式窗口;
2) 提示将在天天呈现不同的内容;
3) 提示内容保存于数据库中,接受由网上传来的索取指令;
4) 提示内容更新便利,也可以随时添加新的内容;
5) 提供一种手段以列出所有提示。

下面,我们将涉及细节问题。我们只讨论其中的某些内容,其它的信息将由实际产生的文档提供(什么意思?蜘蛛精也不太明白,待我们往后瞧瞧再说)。

我需要知道当前显示的是哪一条提示。为了传送当前提示的编号,我们要用到Application。同时,为了在更新提示时知道这些,我们要将已显示的提示编号存档,保存在磁盘中。这样做是为了防止服务器重启动、断电、(反革命份子蓄意破坏、非法组织黑红色网站等)事故中相关数据丢失。我们就用TIPSTORE.DAT作数据存档文件。它包含两行,一行是提示的编号,一行是数据。

因为这些值一直存放在Application中,当运行“每日提示”时,我们就可将它们从TIPSTORE.DAT中取出。作这项工作最佳的方法是利用GLOBAL.ASA,在Application_OnStart中。GLOBAL.ASA文件可以取出这些值。(知道下面这句话怎么译的人请举手!)This is done, courtesy of the FileSystemObject and its support through the TextStreamObject methods:(好,手放下!既然你们都知道了,那我也就不解释了)


PhyPth = Server.MapPath("/tipstore.dat")
set FilSys = CreateObject("Scripting.FileSystemObject")
set TipFil = FilSys.OpenTextFile(PhyPth, 1)
Application("CurTip") = TipFil.ReadLine
Application("SymDt") = CDate(TipFil.ReadLine)
TipFil.Close
set TipFil = nothing
set FilSys = nothing

我们选择Server.MapPath指明文件的物理位址。这可使这段用于处理DAT文件的代码无须经过修改即可用于多个站点。FilSys创建为FileSystemObject,TipFil创建为TextStreamObject。我们接下来就可从这个文件里读数据,完成后再关闭它。

接下来,我们来看看这个更新提示的页面。这也是我们向用户提供提示选择权的页面。我也许会建议你把它放到你的主页上,而其实它可以放到任何地方。让我们来看一看这个名为HOME.ASP的文件的内容:

<%

\\\'Tip of the day processing
if Application("SymDt") < Date then
Application.Lock
CurTip = Application("CurTip") + 1
SymDt = date
Application("CurTip") = CurTip
Application("SymDt") = SymDt
Application.Unlock

PhyPth = Server.MapPath("/tipstore.dat")
set FilSys = CreateObject("Scripting.FileSystemObject")
set TipFil = FilSys.CreateTextFile(PhyPth, true)
TipFil.WriteLine(CurTip)
TipFil.WriteLine(CStr(SymDt))
TipFil.Close
set TipFil = nothing
set FilSys = nothing
end if

%> ...
直到最后,我们检查当前的提示是否比上一个提示更新。假如第一个用户访问这个导致新数据的页面,我们就很轻易来处理这种变化。(明白乎?反正蜘蛛精是搞蒙了。我发觉翻译技术资料最头痛的并不是技术内容,而是如何去领会作者的意思。鄙人生性愚钝,才疏学浅,直觉亦不甚敏锐,只有把这些内容留给网友了。原文请见英文版)。锁住Application,我们就不会取到重复的变化。选择下一个提示的编号,把当前的编号存入数据中以备明天使用。由于上述的诸多原因,将处理的结果存入文档是必要的。(除非你是玩MUD,或与网络情人进行生死恋。可以“24 hours a day, 7 days a week”地开着机器)

为了产生弹出式浏览器窗口,我们得借助JavaScript来完成。下面的函数可以完成这个功能。

function displayPopup(url, height, width) {

properties = "toolbar=0,location=0,scrollbars=1,height=" + = height;
properties = properties + ",width=" + width;
properties = properties + ",left=0,top=0";
popupHandle = open(url, "tipwindow", properties);

}
就像你看到的那样,我们可以在这个弹出窗口中显示任何一个网址。我们也可控制窗口的高度和宽度。对于不同的浏览器,代码产生的结果是不相同的,所以需要在IE和Netscape中作测试。我已预设了一些参数以调整我们要生成的窗口。

Javascript要以为我们创建这个窗口。
URL:

<a href="javascript:displayPopup(\\\'popup.asp\\\',300,300)">

\\\'javascript:\\\'协议告诉浏览器这段代码由JavaScript引擎解释,而与网络服务器无关。这样我们可以让浏览器处理函数时将POPUP.ASP作为地址。窗口大小为300×300象素。

也许该让POPUP.ASP粉墨登场了。

<%

TipNbr = Application("CurTip")

set rstTip = CreateObject("ADODB.Recordset")
rstTip.Open "SELECT * FROM Tip WHERE Tip=" & TipNbr, _
"DSN=TipData"
%>
我们创建rstTip作为Recordset来访问数据库,这个数据库注册为系统DSN(System DSN)(注册方式就不多说了吧,在控制面板中完成)。 DSN的名称为\\\'TipData\\\'。在记录中,我们关注存于Application中的提示编号。

我们要从记录中显示相关信息。


... <% = rstTip("TipTitle") %> ...
通过这种方式,我们把域\\\'TipTitle\\\'从当前的记录中记出,并将其返回至浏览器。我们完成显示后,就产闭它,释放对象。


... <%
rstTip.Close
set rstTip = nothing
%> ...
你会发现另有两个ASP文件:RESETTIPS.ASP使提示编号回复到列表的开始;TIPLIST.ASP按指定的格式显示所有的提示。
返回类别: 教程
上一教程: ASP自定义函数,仿VBA中域函数DLOOKUP
下一教程: 用正则表达式突出显示字符串中查询到的单词的函数

您可以阅读与"创建弹出式“每日提示”窗口"相关的教程:
· 一个不太让人讨厌的自动弹出窗口
· 在ASP中用程序控制弹出NTLM验证窗口
· ASP实现一个不太让人讨厌的自动弹出窗口
· ASP编写不再让人讨厌的自动弹出窗口
· 控制你的弹出窗口只弹出一次
    微笑服务 优质保证 索取样品