在Internet Explorer中使用表格数据控件

在网页中,可以使用“ ActiveX控件”和“ Java小程序”创建可用于执行各种任务的对象实例。 使用<OBJECT> HTML标记将这些对象插入Web页面。 每个对象都有一个32位唯一标识符,该标识符插入<OBJECT>标记的CLASSID属性中。

表格数据控制

“表格数据控件”是Microsoft Internet Explorer内置的Microsoft ActiveX控件。 使用此对象,可以将ASCII(通常使用.txt扩展名)文件中的有序(定界)内容提取到HTML元素中。

例如,如果我们有一个文本文件,其中包含3个字段(与数据库中的列同义),并且这些字段由字符定界,则可以将这些字段的值提取到HTML页面中。

如果我们有相对少量的数据,我们需要经常更新此数据,并且需要客户端脚本,则此对象非常有用。 在这种情况下,控件可以充当小型数据库。

表格数据控件在Internet Explorer 4或更高版本中可用。 此控件的唯一缺点是,它是ActiveX控件,只有Internet Explorer支持它(Netscape需要插件)。

在下面的示例中,您会注意到我指的是特定的文件名。 这些是指本教程的代码档案中包含的文件,您可以在此处下载

实作

使用<OBJECT>标记初始化ActiveX控件。 表格数据控件的CLASSID (唯一标识符)为:

CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83

因此,我们在网页中初始化此控件,如下所示:

<OBJECT ID="SomeID" CLASSID="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"> 
.....
.....
.....
</OBJECT>

任何对象(如applet)都具有许多参数,这些参数使用<PARAM>标记指定。 表格数据控件具有大约7个参数,但是在这里,我将仅讨论其中更重要的参数:

  • DataURL –包含数据的文件的路径,例如“ data.txt”。
  • UseHeader –设置为true ,它指示我们要使用字段名称来引用特定字段。 通常,我们将其设置为true ,但是在某些应用程序中,可能不需要字段名称(标题)。 默认值为false
  • TextQualifier –限定该文本的文本字符串开头和结尾的字符。 例如,在这里~My name is Premshree~TextQualifier是' ~ '。
  • FieldDelim –字段分隔符用于区分数据文件的不同数据字段。 例如,考虑一个数据文件,其中有字段名称,年龄和性别。 这些字段的值将写为*SomeName*|*SomeAge*|*SomeSex* 。 在这里,使用的字段分隔符为' | ”,而我已经将“ * ”用作文本限定符。

因此,完整的初始化将如下所示:

<OBJECT ID="SomeID" CLASSID="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"> 
 <PARAM NAME="DataURL" VALUE="YourDataFile.txt">
 <PARAM NAME="UseHeader" VALUE="TRUE">
 <PARAM NAME="TextQualifier" VALUE="~">
 <PARAM NAME="FieldDelim" VALUE="|">
</OBJECT>

参数名称不区分大小写。

TextQualifierFieldDelim参数可以是任何字符。 选择一个不太可能在文本中使用的字符。

例子

在这些示例中,我将文本限定符用作“ ~ ”,并将字段定界符用作“ | ”。 我为数据文件使用.txt扩展名,但是您可以使用任何喜欢的扩展名。

首先,让我们考虑一个简单的示例,其中将我的姓名和年龄存储在文本文件data1.txt中。 现在,我将使用<SPAN>标记显示我的姓名和年龄。 这是这样做的:

name|age 
~Premshree Pillai~|~19~

现在,我将提取此数据并将其显示在网页data1.htm中,如下所示:

<OBJECT ID="data1" CLASSID="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"> 
 <PARAM NAME="DataURL" VALUE="data1.txt">
 <PARAM NAME="UseHeader" VALUE="TRUE">
 <PARAM NAME="TextQualifier" VALUE="~">
 <PARAM NAME="FieldDelim" VALUE="|">
</OBJECT>

<SPAN DATASRC="#data1" DATAFLD="name"></SPAN>

<SPAN DATASRC="#data1" DATAFLD="age"></SPAN>

输出将显示: Premshree 19

注意SPAN标签的属性。 DATASRC指定要使用的数据源,该数据源与我们已初始化的对象的ID(此处为“ data1 ”)相同。 DATAFLD属性指定我们要显示的数据字段。 如您所见,数据文件data1.txt具有两个字段“名称”和“年龄”。 将DATAFLD指定为' name '将显示名称。

请注意,使用上述方法,您可以将数据从文本文件提取到任何HTML元素中。 但是上述方法效率低下,因为如果我们的数据文件包含多个条目,则将无法直接提取所有值。

在这些情况下,我们使用<TABLE>标记。 TABLE标记具有特殊的属性,如下面的示例所示。

考虑一个简单的示例,其中我们在文本文件中存储3个人的姓名,年龄和性别。 现在,我们要提取此数据并将其以表格形式显示在Web页上。

文本文件data2.txt如下所示:

name|age|sex 
~Premshree Pillai~|~19~|~male~
~Vinod~|~18~|~male~
~Usha~|~19~|~female~

现在,我们可以提取上述所有数据,并(通过data2.htm)以表格形式显示如下:

<OBJECT ID="data2" CLASSID="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83"> 
 <PARAM NAME="DataURL" VALUE="data2.txt">
 <PARAM NAME="UseHeader" VALUE="TRUE">
 <PARAM NAME="TextQualifier" VALUE="~">
 <PARAM NAME="FieldDelim" VALUE="|">
</OBJECT>

<TABLE DATASRC="#data2" BORDER="2">
<THEAD>
 <TH>Name :</TH>
 <TH>Age :</TH>
 <TH>Sex :</TH>
</THEAD>
<TR>
 <TD><SPAN DATAFLD="name"></SPAN></TD>
 <TD><SPAN DATAFLD="age"></SPAN></TD>
 <TD><SPAN DATAFLD="sex"></SPAN></TD>
</TR>
</TABLE>

输出将如下所示:

1037_output

因此,我们仅在3个不同的<TD>标记(列)中指定了三个数据字段( DATAFLD )。 网页自动显示所有3组值(3行)。

我们可以向文本文件中添加任意数量的内容,而无需对提取这些值的HTML代码进行任何修改。

表格数据控件和JavaScript

可以使用JavaScript操作表格数据控件对象。 在第一个示例中, <SPAN>元素显示了数据文件的第一个条目。 现在,假设我们向文件添加了另一个条目; 数据文件(data1.txt)现在看起来像这样:

name|age  
~Premshree Pillai~|~19~  
~Vinod~|~18~

现在,如果我们想查看第二个条目(即Vinod 18),我们可以这样做:

<OBJECT ID="data1" CLASSID="CLSID:333C7BC4-460F-11D0-  
BC04-0080C7055A83">  
 <PARAM NAME="DataURL" VALUE="data1.txt">  
 <PARAM NAME="UseHeader" VALUE="TRUE">  
 <PARAM NAME="TextQualifier" VALUE="~">  
 <PARAM NAME="FieldDelim" VALUE="|">  
</OBJECT>  
 
<SCRIPT LANGUAGE="JavaScript">  
/* Get the complete data record set */  
var dataSet=data1.recordset;  
 
/* Go to next data */  
dataSet.moveNext();  
</SCRIPT>  
 
<SPAN DATASRC="#data1" DATAFLD="name"></SPAN>  
 
<SPAN DATASRC="#data1" DATAFLD="age"></SPAN>

现在,输出为:Vinod 18

上面的脚本很容易解释。 最初,我们使用recordset方法将数据文件的整个数据存储在变量数据集中。 moveNext()方法指向下一个数据项(下一行)。 可以使用的其他一些方法是:

  • moveFirst() –指向第一个数据项(第一行)
  • moveLast() –指向最后一个数据项(最后一行)
  • EOF -此属性用于检查我们是否到达文件末尾。

现在,我将用一个更动态的示例结束本文。 我将创建一个JavaScript代码,显示许多消息,每条消息都指向一个特定的URL。 在这里,股票报价器将从文本文件(档案中的tickerData.txt)读取其消息和相应的URL。 为了完全理解此代码,您必须熟悉动态HTML技术。

这是tickerData.txt文件:

~message~|~messageURL~  
~SitePoint.com~|~http://www.sitepoint.com~  
~WebmasterBase~|http://www.webmasterbase.com~  
~BBC News~|http://www.bbc.co.uk~

还有tickerStyle.css文件:

.tickerStyle{font-family:verdana,arial,helvetica; color:#666699;   
font-weight:bold; font-size:8pt; background:#EEEEFF;  
border-right:#666699 solid 2px; border-left:#666699 solid 1px;  
border-top:#666699 solid 1px; border-bottom:#666699 solid 2px;  
padding:3px; width:400px; text-align:center; text-decoration:none}  
 
.tickerStyle:hover{font-family:verdana,arial,helvetica;  
color:#666699; font-weight:bold; font-size:8pt; background:#DDDDEE;  
border-right:#666699 solid 1px; border-left:#666699 solid 2px;  
border-top:#666699 solid 2px; border-bottom:#666699 solid 1px;  
padding:3px; width:400px; text-align:center; text-decoration:none}

最后,ticker.htm:

<html>  
<head>  
<title>JavaScript Ticker (using Tabular Data Control)</title>  
<link rel="stylesheet" href="tickerStyle.css">  
<script language="JavaScript">  
// JavaScript Ticker  
// - using Tabular Data Control  
// By Premshree Pillai  
 
/*  
 The Ticker function  
 objName : the ID of the object to be used as data source  
 maxMsgs : the number of messages in the data file  
 counter : to keep count of the messages  
 timeOut : delay (in milliseconds)  
*/  
 
function TDC_Ticker(objName, counter, maxMsgs, timeOut)  
{  
 try  
 {  
   eval('tickerSet=' + objName + '.recordset');  
   if(!tickerSet.EOF && counter<maxMsgs-1)  
   {  
     tickerSet.MoveNext();  
     counter++;  
   }  
   else  
   {  
     counter=0;  
     tickerSet.MoveFirst();  
   }  
   setTimeout("TDC_Ticker('"+objName+"','"+counter+"',  
'"+maxMsgs+"','"+timeOut+"')", timeOut);  
 }  
 catch(e)  
 {  
   alert('This Ticker works with IE 4+ only.');  
 }  
}  
</script>  
<!-- END JAVASCRIPT TICKER USING TABULAR DATA CONTROL -->  
</head>  
<body bgcolor="#FFFFFF">  
 
<!-- BEGIN TICKER PLACEMENT -->  
<center>  
<object id="ticker" classid="CLSID:333C7BC4-460F-11D0-BC04-0080C7055A83">  
 <param name="DataURL" value="tickerData.txt">  
 <param name="UseHeader" value="TRUE">  
 <param name="TextQualifier" value="~">  
 <param name="FieldDelim" value="|">  
</object>  
<a href="" datasrc="#ticker" datafld="messageURL" class="tickerStyle">  
 <span id="tickerDiv" datasrc="#ticker" datafld="message"></span>  
</a>  
<script language="JavaScript">  
var tickerMaxMsgs=3; // Maximum Messages in the Data File  
var tickerCount=tickerMaxMsgs;  
new TDC_Ticker('ticker',tickerCount,tickerMaxMsgs,2000); // Set the Ticker  
</script>  
</center>  
<!-- END TICKER PLACEMENT -->  
 
</body>  
</html>

From: https://www.sitepoint.com/control-internet-explorer/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值