初探 HTML 组件 – 创建一个 HTC
作者:Weber 出处:HTMLCN
创建一个 HTC
下面通过创建一个鼠标滑过加亮显示的 HTC 来演示一下创建 HTC 的过程。 1、创建 HTC 文件的架构。一个标准的 HTC 文件含有一个 SCRIPT 块和一对可选的 COMPONENT 标记。
<PUBLIC:COMPONENT>
<SCRIPT>
</SCRIPT>
</PUBLIC:COMPONENT>
2、写一个可执行的脚本。
在下面的代码中,ATTACH 被用于设置 HTC 接收元素在 onmouseover 和 onmouseout 事件被触发的消息。它通知 HTC 通过切换颜色来体现鼠标滑过元素时的加亮效果。
<PUBLIC:COMPONENT>
<PUBLIC:ATTACH EVENT=\"onmouseover\" ONEVENT=\"Hilite()\" />
<PUBLIC:ATTACH EVENT=\"onmouseout\" ONEVENT=\"Restore()\" />
<SCRIPT LANGUAGE=\"JScript\">
var normalColor, normalSpacing;
function Hilite()
{
// save original values
normalColor = runtimeStyle.color;
normalSpacing= runtimeStyle.letterSpacing;
runtimeStyle.color = \"red\";
runtimeStyle.letterSpacing = 2;
}
function Restore()
{
// restore original values
runtimeStyle.color = normalColor;
runtimeStyle.letterSpacing = normalSpacing;
}
</SCRIPT>
</PUBLIC:COMPONENT>
注意:您可以直接使用属性、方法或者是事件的名称来访问它们,并不需要在前面加上 element 的前缀。在前面的例子中我们注意到在切换颜色时我们直接调用了 runtimeStyle ,而不是使用 element.runtimeStyle。
3、一旦执行,这个 HTC 就能在网页中应用来达到鼠标滑过加亮的效果。
<HEAD>
<STYLE>
LI {behavior:url(hilite.htc)}
</STYLE>
</HEAD>
<P>Mouse over the two list items below to see this effect.
<UL>
<LI>HTML Authoring</LI>
<LI>Dynamic HTML</LI>
</UL>
初探 HTML 组件 – 定义方法
作者:Weber 出处:HTMLCN
定义方法
我们可以使用 PUBLIC:METHOD 元素来定义 HTC 的方法集,如下例所示:
<PUBLIC:METHOD NAME="startFlying" />
当我们定义了一个方法后,我们就可以在 HTC 中直接来调用它。请看下面的例子:
<PUBLIC:METHOD NAME="tick" />
<PUBLIC:METHOD NAME="startFlying" />
:
<SCRIPT LANGUAGE="JScript">
var currCount;
var flyCount;
var flying;
var msecs;
var oTop, oLeft;
msecs = 50;
flyCount = 20;
flying = false;
runtimeStyle.position = "relative";
runtimeStyle.visibility = "hidden";
window.attachEvent("onload", onload);
function onload()
{
// delay commences from the window.onLoad event
if (delay != "none")
{
window.setTimeout(uniqueID+".tick()", delay);
}
}
function tick()
{
if (flying == false)
{
startFlying();
}
else
{
doFly();
}
}
function startFlying()
{
if (fromX==null && fromY==null)
{
if (from=="top")
{
runtimeStyle.posTop = -offsetTop-offsetHeight;
}
else if (from=="bottom")
{
runtimeStyle.posTop = element.document.body.clientHeight;
}
else if (from=="right" )
{
runtimeStyle.posLeft = element.document.body.clientWidth;
}
else
{
runtimeStyle.posLeft = -offsetLeft-offsetWidth;
}
}
else
{
runtimeStyle.posTop = fromY;
runtimeStyle.posLeft = fromX;
}
runtimeStyle.visibility = "visible";
flying = true;
oTop = runtimeStyle.posTop;
oLeft = runtimeStyle.posLeft;
currCount = 0;
doFly();
}
function doFly()
{
var dt, dl;
currCount++;
dt = oTop / flyCount;
dl = oLeft / flyCount;
runtimeStyle.posTop -= dt;
runtimeStyle.posLeft -= dl;
if (currCount < flyCount)
{
window.setTimeout(uniqueID+".tick();", msecs);
}
else
{
runtimeStyle.posTop = 0;
runtimeStyle.posLeft = 0;
flying = false;
evObj = createEventObject();
evObj.setAttribute("resulty", uniqueID);
finished.fire(evObj);
}
}
</SCRIPT>
初探 HTML 组件 – 定义事件
作者:Weber 出处:HTMLCN
<p><b>定义事件</b>
<p>要在 HTC 中定义一个事件,我们需要用到 PUBLIC:EVENT 元素。当我们定义了一个事件后,我们就可以在 HTC 的所在页中来调用它。
<p>在下面的例子中来示范如何实现一个计算器的功能。在 HTC 中我们使用 EVENT 元素定义了一个 onResultChange 事件。当在所在页中激活 onResultChange 事件时,HTC 将计算出结果并返回到所在页。
<xmp>
<PUBLIC:EVENT NAME=onResultChange ID=rcID />
<SCRIPT LANGUAGE="JScript">
:
oEvent = createEventObject();
oEvent.result = sResult;
rcID.fire (oEvent);
:
</SCRIPT>
</xmp>
<p>下面是含有这个 HTC 的页面:
<xmp>
<HTML XMLNS:InetSDK>
<HEAD>
<TITLE>Calculator Sample</TITLE>
<STYLE>
INPUT {font-family: Courier New}
@media all {
InetSDK:CALC {behavior:url(Engine.htc)}
}
</STYLE>
<LINK REL="stylesheet" HREF="/workshop/basicSDKIE4.css" TYPE="text/css">
</HEAD>
<BODY BGCOLOR="<BLOCKQUOTE CLASS="body">
<P>
<InetSDK:CALC id="myCalc" onResultChange="resultWindow.innerText =window.event.result">
<TABLE>
<TR>
<TD COLSPAN=5>
<DIV ID="resultWindow" STYLE="padding:5; background-color:buttonface" ALIGN="RIGHT">0.</DIV>
</TD>
</TR>
<TR>
<TD><INPUT TYPE=BUTTON VALUE=" 7 "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" 8 "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" 9 "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" / "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" C "></TD>
</TR>
<TR>
<TD><INPUT TYPE=BUTTON VALUE=" 4 "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" 5 "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" 6 "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" * "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" % " DISABLED></TD>
</TR>
<TR>
<TD><INPUT TYPE=BUTTON VALUE=" 1 "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" 2 "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" 3 "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" – "></TD>
<TD><INPUT TYPE=BUTTON VALUE="1/x" DISABLED></TD>
</TR>
<TR>
<TD><INPUT TYPE=BUTTON VALUE=" 0 "></TD>
<TD><INPUT TYPE=BUTTON VALUE="+/-"></TD>
<TD><INPUT TYPE=BUTTON VALUE=" . "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" + "></TD>
<TD><INPUT TYPE=BUTTON VALUE=" = "></TD>
</TR>
</TABLE>
</InetSDK:CALC>
</BLOCKQUOTE>
</BODY>
</HTML>
</xmp>
<p>注意:本文的所有例子都需要在 IE5 以上版本的浏览器中才能看到应有的效果。
邮寄手机的事总是忘!
还有挂失招行卡,我已经搞丢2张卡了~
今天晚上有空就看看下面这篇文章,htc当初就没太高明白。
怎么写HTC文件呢?请给点资料!谢谢
http://51js.com/viewthread.php?tid=1672
应该看看美剧了,每天坚持看一点,不带字幕或者装上英文字幕来看。
虽然会很累,但是如果不这样最近实在就没有什么进步了~
还得洗衣裤,洗床单!
我在17173中发现的这个天赋模拟器,最初可能是发布于Sina。
现象:不能显示出来职业
原因:
在initLoad() 中 先执行了函数 loadTalents()函数而后执行了talents_main()函数。
loadTalents()函数中调用了showClassList()函数,showClassList()函数又调用了setInnerHTML(),setInnerHTML()用到了涉及浏览器类型的全局变量mozilla,但是mozilla这个变量确是在talents_main()中初始化的,当装载职业的时候mozilla这个变量还没有正确初始化,导致在Firefox浏览器中
function setInnerHTML(object,
html)
{
if(mozilla)
{
var r =
object.ownerDocument.createRange();
r.selectNodeContents(object);
r.deleteContents();
var
df =
r.createContextualFragment(html);
object.appendChild(df);
}
else
if(navigator.appName == "Microsoft Internet
Explorer")
{
object.innerHTML = html;
}
}
上面这段函数在装载职业的时候没有被正确执行!
修改方法:
把初始化mozillaq这个全局变量的语句写在前面就好了。不要放在talents_main()这个函数里,再增加个函数专门初始化mozilla这个全局变量。
评论:
这个Bug真是的,本来已经打算考虑跨浏览器,但却不做彻底,还不如不做!!!
当年IBM打造IBM PC兼容机的时候,目的可是为了对抗Apple的PC。可惜后来由于IBM自己的失误,空让Intel 和Microsoft 做大,而后Apple却用了IBM的CPU。现如今微软又要用IBM的CPU苹果也要用Intel的CPU,变变换换看的我是眼花缭乱!
《先锋周报》No.26
可怜的小鸟,一飞就飞到墙上,然后摔下来~
http://blog.donews.com/gzpbx/gallery/image/87225.aspx
和我的宠物乌龟在一起!
http://blog.donews.com/gzpbx/gallery/image/87224.aspx
装的版本是番茄花园 Windows XP Pro SP2 免激活 2 in 1 ,感觉上没什么不一样,过一阵子把公司的电脑也给重装了~
display:inline 的作用[转载]
display显示属性允许使用四个值中的一个来定义一个元素:
block (在元素的前和后都会有换行)
inline (在元素的前和后都不会有换行)
list-item (与block相同, 但增加了目录项标记)
none (没有显示)
对于下列元素来说,此属性的默认值为 block :
ADDRESS
QUOTE BODY XMP CENTER COL COLGROUP DD DIR DIV DL DT FIELDSET FORM Hn HR
IFRAME LEGEND LISTING MARQUEE MENU OL P PLAINTEXT PRE TABLE TD TH TR UL
对于下列元素来说,此属性的默认值为 none :
BR FRAME nextID TBODY TFOOT THEAD
对于下列元素来说,此属性的默认值为 list-item :
LI
其他元素默认值都是 inline 。
2005年8月15日补:
这个网站介绍的更好:display