为你的DHTML添活力
你可以通过IE为你的HTML元素添加行为,建立面向对象的页面设计方法。Phillip Perkins建立了一个<DIV>对象,当用户拖动它时,它会在限定的<DIV>内继续定向运行。+G\A a#DS'a;g)uSxMacromedia Flash可以使开发者免受网络浏览器与互操作解决方案的限制。但是,局限于Flash让你无法体验到网络浏览器的许多特色。VA-oI1nQ
例如,你可以通过IE为HTML元素添加行为,建立对象面向的页面设计方法。在这个例子中,我会建立了一个<DIV>对象,当用户拖动它时,它会在限定的<DIV>内继续定向运行。WPMR)|g"SP
为HTML添加行为的能力是设计的一个关键部分。在IE中,这通过相关的样式来实现。添加行为的样式特性即“behavior”。你可以通过嵌套的<STYLE>标签来添加行为,就像这样:
<style>DIV.object { behavior: url(Behavior.htc);} H)}/yf\4j
从这段脚本中,你可以发现一个行为会提及到一个HTC(HTML组件)文件。既然我们具有对象化这些HTML元素的基础,我们就能建立控制它们的行为脚本。
;QY~ ~o t-k9v
表A中包含了为我们的嵌套<DIV>对象建立行为的所有代码。在这一个组件内就有许多的代码。#]/B5mhy(S
T8^/|8DX:m
表 A
<public:component lightweight="true">
<public:attach event="onmousedown" onevent="element_onmousedown()"/>
%\Ya*{~)l;Z
<public:attach event="onmousemove" onevent="element_onmousemove()"/>
<public:attach event="onmouseup" onevent="element_onmouseup()"/>
<public:attach event="onmouseout" onevent="element_onmouseup()"/>
'f RU.[ G4{;o
<public:attach event="onselectstart" onevent="element_onselectstart()"/>2K8d!de2z ~%^!c5Wy:eM
<public:attach event="ondragstart" onevent="element_ondragstart()"/>F:o,J:J],_ S7N
.z`5^FoY
<public:attach event="onload" for="window" onevent="Init()"/>qj"g dy UyAH
<public:method name="moveMe"/>
<public:property name="clickPoint" get="get_clickPoint" put="put_clickPoint"/>4Ao p2ba"U5D$?vc
l*x!m5}0M(^tL
<public:property name="interval" get="get_interval" put="put_interval"/>
"Q6W_q-Q5GYMt
<script language="JScript">
varm_bStarted = false;
varm_bMoving = false;
varm_clickPoint = null;1nt7Q zeQCNx
varm_tStart = 0;R/H8~fxQU
varm_tEnd = 0;
varm_ptStart = null;#]EbC D?
varm_Slope = null;
varm_interval = 0;
varm_isMoving = false; ~;Z;d9lf#B1um
varm_trash = 0;
varm_dX = 0; varm_dY = 0;Wn ?(uP5r? q5~(k
varm_vectX = 0; varm_vectY = 0;bk0qhY5L1}9S
varm_pNode = null;+ryCw[W,DE
varm_bounds = [];J,y)L"aAWl1LqUF
var BOUNDS = ;
varm_dimensions = [];5zq;Y8C.gx
var DIMS = ;
XG0AL(C;bH7tl
function Init() {"Wm4Au/b0Q!D;y
element.id = element.document.uniqueId;
varm_pNode = element.parentNode;
m_bounds = [ \ZHr}W V8~
0,NXRC6`iZ|xG
0,o;x \4EY
parseInt(m_pNode.currentStyle.width),
parseInt(m_pNode.currentStyle.height):LvK4['v#k
];$J3mk Y/r2lWTt-L
m_dimensions = [L:?i,GNC1h
parseInt(element.offsetWidth),
parseInt(element.offsetHeight)
];
}Zh0W#qW;yC$By(b
W2m(pC8K v ^0j2XHA-_
jXh?:W-q |
function element_onmousedown() {Nc#D#]nc
m_bStarted = true;Nz?)?A&n2}
m_tStart = new Date();
clearInterval(m_interval);@3Wx|3w1DV
m_Slope = null;^c"q%@N,GoG;?
m_ptStart = null;hO7K {/b%CxKE
m_trash = 0;
m_dX = 0; m_dY = 0;*uv@8i+m+^7CB8O
m_vectX = 0; m_vectY = 0;e-C;m5m6m+K
m_clickPoint = new Point(event.x, event.y);!h2T*],^7t+q{l.r^
m_ptStart = new Point(parseInt(element.currentStyle.left), parseInt(element.currentStyle.top));