欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP 3.0高级编程(二十四)

程序员文章站 2022-03-26 10:57:10
(1)    创建一个内容页面 我们已经使用Content Linking组件为本章提供的示例创建了菜单页面。Chapter06文件夹中的...
(1)    创建一个内容页面
我们已经使用Content Linking组件为本章提供的示例创建了菜单页面。Chapter06文件夹中的页面Default.htm采用上述代码创建菜单,如图6-2所示:

图6-2  使用Content Linking组件创建的菜单页面
       可以看到内容链接列表文件的内容显示在链接的下面,我们使用FileSystemObject对象完成这一工作。
       <%
       create an instance of a FileSystemObject object
       Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

       open the text file as a TextStream object
       Set objTStream = objFSO.OpenTextFile(Server.MapPath("contlink.txt"), ForReading)
       Response.Write objTStream.ReadAll                          read the whole file and put into page
       ObjTStream.Close
       %>
       如果你编辑了contlink.txt文件,下次再次调用这个页面时,会看到菜单的条目发生了变化。注意文件中的最后三个条目,这三个条目使用前面介绍的redirect.asp技术,把绝对(而不是相对)的URL插入到列表中。
(2)    浏览这些页面
创建一个Content Linking组件实例并且使用它的一个方法时,将把当前页面的URL与指定的内容链接列表文件中的条目相匹配。不仅能用该组件创建一个内容列表(就像刚看到的那样),而且当在浏览器上打开其中一个页面时,可以用该组件对列表中的各个页面进行导航。
这意味着可以用超链接或按钮从这些页面中的一个移到另一个。例如,可以给页面添加Next和Back按钮,通过使用GetNextURL和GetPreviousURL方法能知道列表中的哪一个页面是前一个,哪一个页面是下一个。另一方面,能用GetNthURL方法跳到列表中的任何页面,用GetListIndex方法能知道当前页面在列表中的位置。
下面是一段给页面添加Next和Back按钮的代码,我们要做的只是把这段程序放在内容链接文件所列出的每一页中,或者用SSI的#include指令将它插入其中。
<!-- need a form to force Navigator to display the buttons -->
<FORM ACTION="">
<%
well insert this into each page using an SSI #include statement
create an instance of the Content Linking component
Set objNextLink = Server.CreateObject("MSWC.NextLink")
set the content linking list file path and name
strListFile = "contlink.txt"
get the index of the current page in the list
intThisPage = objNextLink.GetListIndex(strListFile)
If intThisPage > 1 Then  can go back
%>
  <INPUT TYPE=BUTTON VALUE="< Back"
     ONCLICK="location.href=<% = objNextLink.GetPreviousURL(strListFile) %>;"
     TITLE="Go to <% = objNextLink.GetPreviousDescription(strListFile) %>">
  &nbsp;
<%
End If
%>
<INPUT TYPE=BUTTON VALUE=" Menu " ONCLICK="location.href=Default.asp;"
       TITLE="Return to the main Installable Components menu">
<%
If intThisPage < objNextLink.GetListCount(strListFile) Then  can go forward
%>
  &nbsp;
  <INPUT TYPE=BUTTON VALUE="Next >"
         ONCLICK="location.href=<%= objNextLink.GetNextURL(strListFile) %>;"
         TITLE="Go to <% = objNextLink.GetNextDescription(strListFile) %>">
<%
End If
%>
</FORM>
第一步是创建Content Linking组件,然后把列表文件名存入一个变量中,以便后面在创建页面里的客户端JScript代码时能够使用这个列表文件。另外这样做也便于页面的维护,因为如果想使用一个不同文件名仅需在一个地方改变就可以了。
现在让我们了解一下在链接列表中所处的位置。GetListIndex方法提供当前页面的索引号,从列表中的第一页开始。如果当前页面的索引号比1大,那么可以后退,所以我们在页面中创建Back按钮。如果当前页面的索引号比列表中的项数少,创建Next按钮。页面中总是包括一个Home按钮,以便访问者在任何时候都能轻易地返回到内容页面。
如果打开列在主菜单中的页面之一的话,将会看到使用这项技术在每个页面上创建的一系列导航按钮,创建按钮的代码在文件contlinkbuttons.inc中,可用#include指令将它插入每个页面中。图6-3所示为带有按钮的界面。

图6-3  带有按钮的界面
       在图6-3中有三个按钮,使用GetPreviousDescription方法获得上个页面的链接文件,并把这个文本放入Back按钮的TITLE属性中,作为弹出的提示。
       <INPUT TYPE=BUTTON VALUE="< Back"
ONCLICK="location.href=<% = objNextLink.GetPreviousURL(strListFile) %>;"
          TITLE="Go to <% = objNextLink.GetPreviousDescription(strListFile) %>">
       Next按钮采用GetNextDescription方法完成类似的工作。
(3)    用JavaScript跳转
这些导航按钮使用JavaScript(而不是VBScript)装载新页面,这样就能够和大多数现代浏览器兼容。例如Back按钮包含下面的属性:
ONLICK="location.here=<% = objNextLink.GetPreviousURL(strListFile) %>; "
当页面的HTML版本由ASP创建时,在<%…%>标记中的表达式用其数值取代,所以发往浏览器的网页看起来如下所示:
ONCLICK="location.herf=permissionchecker.asp; "
为什么选择使用变量来表示内容链接列表文件的名字?其原因是在单个语句中包括一个三层的嵌套引用是非常麻烦的。
注意浏览器的缺省语言是JavaScript(或IE中的JScript),而不是VBScript,通过使用JavaScript,可以避免在OnClick代码中必须提供LANGUAGE参数,同时对非IE浏览器提供兼容性。

6.2.3 Ad Rotator组件
       Ad Rotator组件允许浏览器在引用ASP页面时每次显示不同的图像,这项技术经常用在显示广告的站点上。每次打开或重新载入页面时,ASP采用“旋转调度文件”(rotator schedule file)中的信息选择一副图像,并插入网页中。然而Ad Rotator组件能做更复杂的工作,它可以把图像设置成超级链接而不是一副静止的图像,并能记录用户对每个广告的点击次数。
       在本章所介绍的组件中,Ad Rotator组件可能是最难使用的,因为它涉及几个不同的文件。在查看每个文件之前,图6-4所示的工作过程总览可能有助于了解它们之间的组合方式。

图6-4  Ad Rotator组件的工作过程总览
1.  旋转调度文件
Ad Rotator组件依赖于该文件来指定显示的广告或图像。这个文件包括每个图像文件的名字、显示的尺寸大小以及显示时间的相对百分数。该文件分为两部分,由一个仅含有一个星号(*)的行分隔。
文件格式如下:
REDIRECT URL
WIDTH width
HEIGHT height
BORDER border
*
adURL
adHomeURL
text
impressions
其中:
· URL是执行重新定向的ASP文件或程序的虚拟路径及名称。
· width和height定义了页面中广告条的大小(以像素为单位),缺省值为440×60。
· border规定了广告条边界的宽度(以像素为单位),缺省值为1,无边界时为0。
第一部分是可选的,设置应用于该文件中所有广告条的缺省值。这给设置所有图像的参数提供了一种方法,边界宽度可以使用Ad Rotator组件中的border属性来设置。如果忽略了一项或多项此类任选参数,而且没有明确设置对象属性,那么参数就使用其本身和缺省值。如果忽略所有这些参数,仍需包含“*”作为文件的第一行。
第二部分,即“*”后的部分,必须存在于该文件中,它提供了各个广告条的细节。对于每个广告条,下面四个参数要重复使用。这些参数是:
· adURL,是广告图像文件的虚拟路径和文件名。
· adHomeURL,是广告跳转到的URL,连字符(-)表明该广告条没有链接。
· text,浏览器不支持图型文件时显示的文本。
· impressions,是一个整数