??xml version="1.0" encoding="utf-8" standalone="yes"?>
function getInfo()
{
var s = "";
s += " |页可见区域宽:"+ document.body.clientWidth;
s += " |页可见区域高:"+ document.body.clientHeight;
s += " |页可见区域宽:"+ document.body.offsetWidth + " (包括边线和滚动条的宽)";
s += " |页可见区域高:"+ document.body.offsetHeight + " (包括边线的宽)";
s += " |页正文全文宽:"+ document.body.scrollWidth;
s += " |页正文全文高:"+ document.body.scrollHeight;
s += " |页被卷ȝ?ff)Q?+ document.body.scrollTop;
s += " |页被卷ȝ?ie)Q?+ document.documentElement.scrollTop;
s += " |页被卷ȝ左:"+ document.body.scrollLeft;
s += " |页正文部分上:"+ window.screenTop;
s += " |页正文部分左:"+ window.screenLeft;
s += " 屏幕分L率的高:"+ window.screen.height;
s += " 屏幕分L率的宽:"+ window.screen.width;
s += " 屏幕可用工作区高度:"+ window.screen.availHeight;
s += " 屏幕可用工作区宽度:"+ window.screen.availWidth;
s += " 你的屏幕讄?"+ window.screen.colorDepth +" 位彩?;
s += " 你的屏幕讄 "+ window.screen.deviceXDPI +" 像素/英寸";
//alert (s);
}
getInfo();
</script>
在我本地试当中Q?
在IE、FireFox、Opera下都可以使用
document.body.clientWidth
document.body.clientHeight
卛_获得Q很单,很方ѝ?
而在公司目当中Q?
Opera仍然使用
document.body.clientWidth
document.body.clientHeight
可是IE和FireFox则?
document.documentElement.clientWidth
document.documentElement.clientHeight
原来是W3C的标准在作怪啊
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
如果在页面中dq行标记的话
在IE中:
document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度
在FireFox中:
document.body.clientWidth ==> BODY对象宽度
document.body.clientHeight ==> BODY对象高度
document.documentElement.clientWidth ==> 可见区域宽度
document.documentElement.clientHeight ==> 可见区域高度
?
在Opera中:
document.body.clientWidth ==> 可见区域宽度
document.body.clientHeight ==> 可见区域高度
document.documentElement.clientWidth ==> 面对象宽度Q即BODY对象宽度加上Margin宽)
document.documentElement.clientHeight ==> 面对象高度Q即BODY对象高度加上Margin高)
而如果没有定义W3C的标准,?
IE为:
document.documentElement.clientWidth ==> 0
document.documentElement.clientHeight ==> 0
FireFox为:
document.documentElement.clientWidth ==> 面对象宽度Q即BODY对象宽度加上Margin宽)document.documentElement.clientHeight ==> 面对象高度Q即BODY对象高度加上Margin高)
Opera为:
document.documentElement.clientWidth ==> 面对象宽度Q即BODY对象宽度加上Margin宽)document.documentElement.clientHeight ==> 面对象高度Q即BODY对象高度加上Margin高)
真是一仉烦事情,其实开发来看,宁可一些对象和ҎQ不使用最新的标准要方便许多啊?br />
有时候需要取面的底? ׃用到document.body.clientHeight , 在HTML 标准?q一句就能取到整个页面的高度, 不论body 的实际内容到底有多高, 例如, 1074*768 的分辨率, 面最大化? q个高度Uؓ720 , 即ə面上只有一?#8221;hello world” , 也仍然取?20.
可是在XHTML? 如果body 体中只有一? 则document.body.clientHeight 只能取到那一行的高度, U?0px, q时如何q想取到整个面的高? p用document.documentElement.clientHeight 来获取了.
原因? 在HTML ? body 是整个DOM 的根, 而在XHTML ? document 才是? body 不再是根, 所以取body 的属性时, 不能再取到整个页面的?
区别新旧标准的行?
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN” >
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
前者指明该面使用旧标? 后者指明该面使用新标?
ȝ:
XHTML中用 document.documentElement.clientHeight 代替
document.body.clientHeight
Firebug是网开发的利器Q能够极大地提升工作效率?/p>
但是Q它不太Ҏ上手。我曄译q一?a target="_blank" >《Firebug入门指南?/a>Q介l了一些基本用法。今天,l箋介绍它的高用法?/p>
===================================
Firebug控制台详?/strong>
作者:阮一?/p>
控制収ͼConsoleQ是Firebug的第一个面板,也是最重要的面板,主要作用是显C网加载过E中产生各类信息?/p>
一、显CZ息的命o
Firebug内置一个console对象Q提?U方法,用来昄信息?/p>
最单的Ҏ是console.log()Q可以用来取代alert()或document.write()。比如,在网脚本中使用console.log("Hello World")Q加载时控制台就会自动显C如下内宏V?/p>
另外Q根据信息的不同性质Qconsole对象q有4U显CZ息的ҎQ分别是一般信息console.info()、除错信息console.debug()、警告提Cconsole.warn()、错误提Cconsole.error()?/p>
比如Q在|页脚本中插入下面四行:
console.info("q是info");
console.debug("q是debug");
console.warn("q是warn");
console.error("q是error");
加蝲Ӟ控制C昄如下内容?/p>
可以看到Q不同性质的信息前面有不同的图标,q且每条信息后面都有链接Q点d跌{到网|码的相应行?/p>
二、占位符
console对象的上?U方法,都可以用printf风格的占位符。不q,占位W的U类比较,只支持字W(%sQ、整敎ͼ%d?iQ、QҎQ?fQ和对象Q?oQ四U?/p>
比如Q?/p>
console.log("%dq?d?d?,2011,3,26);
console.log("圆周率是%f",3.1415926);
%o占位W,可以用来查看一个对象内部情c比如,有这样一个对象:
var dog = {} ;
dog.name = "大毛" ;
dog.color = "黄色";
然后Q对它用o%占位W?/p>
console.log("%o",dog);
三、分l显C?/strong>
如果信息太多Q可以分l显C,用到的方法是console.group()和console.groupEnd()?/p>
console.group("W一l信?);
console.log("W一l第一?);
console.log("W一l第二条");
console.groupEnd();
console.group("W二l信?);
console.log("W二l第一?);
console.log("W二l第二条");
console.groupEnd();
点击l标题,该组信息会折叠或展开?/p>
四、console.dir()
console.dir()可以昄一个对象所有的属性和Ҏ?/p>
比如Q现在ؓW二节的dog对象Q添加一个bark()Ҏ?/p>
dog.bark = function(){alert("汪汪?);};
然后Q显C对象的内容,
console.dir(dog);
五、console.dirxml()
console.dirxml()用来昄|页的某个节点(nodeQ所包含的html/xml代码?/p>
比如Q先获取一个表D点,
var table = document.getElementById("table1");
然后Q显C节点包含的代码?/p>
console.dirxml(table);
六、console.assert()
console.assert()用来判断一个表辑ּ或变量是否ؓ真。如果结果ؓ否,则在控制台输Z条相应信息,q且抛出一个异常?/p>
比如Q下面两个判断的l果都ؓ否?/p>
var result = 0;
console.assert( result );
var year = 2000;
console.assert(year == 2011 );
七、console.trace()
console.trace()用来q踪函数的调用轨qV?/p>
比如Q有一个加法器函数?/p>
function add(a,b){
return a+b;
}
我想知道q个函数是如何被调用的,在其中加入console.trace()Ҏ可以了?/p>
function add(a,b){
console.trace();
return a+b;
}
假定q个函数的调用代码如下:
var x = add3(1,1);
function add3(a,b){return add2(a,b);}
function add2(a,b){return add1(a,b);}
function add1(a,b){return add(a,b);}
q行后,会显Cadd()的调用轨q,从上C依次为add()、add1()、add2()、add3()?/p>
八、计时功?/strong>
console.time()和console.timeEnd()Q用来显CZ码的q行旉?/p>
console.time("计时器一");
for(var i=0;i<1000;i++){
for(var j=0;j<1000;j++){}
}
console.timeEnd("计时器一");
九、性能分析
性能分析QProfilerQ就是分析程序各个部分的q行旉Q找出瓶颈所在,使用的方法是console.profile()?/p>
假定有一个函数Foo()Q里面调用了另外两个函数funcA()和funcB()Q其中funcA()调用10ơ,funcB()调用1ơ?/p>
function Foo(){
for(var i=0;i<10;i++){funcA(1000);}
funcB(10000);
}
function funcA(count){
for(var i=0;i<count;i++){}
}
function funcB(count){
for(var i=0;i<count;i++){}
}
然后Q就可以分析Foo()的运行性能了?/p>
console.profile('性能分析器一');
Foo();
console.profileEnd();
控制C昄一张性能分析表,如下图?/p>
标题栏提C,一p行了12个函敎ͼp时2.656毫秒。其中funcA()q行10ơ,耗时1.391毫秒Q最短运行时?.123毫秒Q最?.284毫秒Q^?.139毫秒QfuncB()q行1ơ,耗时1.229ms毫秒?/p>
除了使用console.profile()ҎQfirebugq提供了一?概况"QProfilerQ按钮。第一ơ点击该按钮Q?性能分析" 开始,你可以对|页q行某种操作Q比如ajax操作Q,然后W二ơ点击该按钮Q?性能分析"l束Q该操作引发的所有运就会进行性能分析?/p>
十、属性菜?/strong>
控制台面板的名称后面Q有一个倒三角,点击后会昄属性菜单?/p>
默认情况下,控制台只昄Javascript错误。如果选中Javascript警告、CSS错误、XML错误都送上Q则相关的提CZ息都会显C?/p>
q里比较有用的是"昄XMLHttpRequests"Q也是昄ajaxh。选中以后Q网늚所有ajaxhQ都会在控制台面板显C出来?/p>
比如Q点M?a target="_blank" >YUICZQ控制台׃告诉我们Q它用ajax方式发出了一个GEThQhttph和响应的头信息和内容MQ也都可以看到?/p>
[参考文献]
* Firebug Tutorial - Logging, Profiling and CommandLine (Part I)
* Firebug Tutorial - Logging, Profiling and CommandLine (Part II)
Q完Q?解决办法2个,W一是在load完成之前把这些按钮全部disabledQ再处理onload事gQ把他们enableQ这样好像比较麻?/p>
另外一个觉得办法是Q在用户点击q接的时候先判断面是否load完成Q如果没有完成,那就什么都不干
判断Ҏ如下
有限状态机很早已用作设计和实C仉动的E序Q比如网l适配器和~译器)内复杂行为的l织原则。现在,可编E的 Web 览器ؓC代的应用E序开辟了一U全新的事g驱动环境。基于浏览器的应用程序因 Ajax 而广为流行,而同时也变得更ؓ复杂。程序设计h员和实现人员能够大大受益于有限状态机的原理和l构。本文章将向您介绍如何使用有限状态机来ؓ一个简单的 Web 部?—?一个能够E入和淡出的工hC?—?设计复杂的行为?/p>
本系列的W?2 部分描q如何在 JavaScript 内实现此设计Q以及如何充分利?JavaScript 独特的语aҎ,比如兌数组和函数闭包。第 3 部分则会늛如何使此实现能够在所有流行的 Web 览器中正常工作的内宏V最l的代码紧凑l,逻辑清晰透明Q动L果即使在负蝲极重的处理器上也能^Ex畅?/p>
多年以来QWeb 设计人员一直都通过在流行的 Web 览器内采用 JavaScript 解释器的方式来改善其|站的外观。他们的做法大都是将代码的简短片D复制到 HTML 面中。当前,随着 Ajax 的日益流行,软g工程师也开始?JavaScript 来开发能在浏览器内执行的C代的应用E序。基于浏览器的应用程序的规模不断扩大Q这q应要求采用其他执行环境成长和发展所使用的相同设计模式和开发原理?/p>
Z览器的应用E序在实时环境中执行Q在q种环境中鼠标、键盘、定时器、网l和E序事g都十分常见。当事g驱动的应用程序的行ؓ取决于事件发生的序Ӟ其编E就会变得非常复杂,也十分难以调试和修改。Y件工E师早已开始?有限状态机 —?学术领域有时又称其ؓL或确定性有限自动机 —?作ؓ一U组l原理来开发事仉动的E序了?/p>
有限状态机通过用直观的表格代替复杂的逻辑计增加了严密性。从传统意义上讲Q有限状态机对开发诸如网l驱动程序和~译器这cȝ序颇有帮助。有限状态机也同h助于开发基于浏览器的应用程序?/p>
在本pd中,您将l习开发一个样例有限状态机应用E序Q来深入体验 JavaScript 语言的一些独特特性:
q些语言Ҏ可以提供一U紧凑而简明的方式来ؓ状态间的事件和转移l织动作Q还可以提供一Uy妙的方式来兼容不同的览器事件模型?/p>
样例应用E序 FadingTooltip 比内|于大多数浏览器的默认工hC更为精致。用 FadingTooltip 部件创建的工具提示使用动画式E入和淡出代替H然弹出和消失,q可随光标移动。设计此行ؓ所用的有限状态机模式佉K辑清晰透明。实现此行ؓ所用的 JavaScript 语言Ҏ则使源代码紧凑而有效?/p>
本文展示了如何用有限状态机的图、表表示设计一个动d部件的行ؓ。本pd的后l文章会介绍如何?JavaScript 内实现有限状态机的表表示以及如何处理与在行的浏览器内进行测试和实现相关的实际问题?/p>
当光标暂时停留于一些可视控?—?比如按钮、选择器或输入字段 —?Ӟ时下的许多图形应用程序都能暂时显C包含相应的帮助性定义、操作说明或的小文本框。在早期的系l中Q这些小文本框被UCؓ “气球帮助”Q在 IBM 的一些品中Q称其ؓ infopopQ在一?Microsoft 产品中,其名字则?ScreenTip。在本文Q我使用的是其中更ؓ常见的术?em>工具提示?/p>
现在一些流行的 Web 览器,比如 Netscape Navigator、Microsoft Internet Explorer、Opera ?Mozilla FirefoxQ会ZQ何拥?title
属性的 HTML 元素昄工具提示。例如,清单 1 中显C的q三个拥?title
属性的 HTML 元素?/p>
Here are some <span title='Move your cursor a bit to the right, please.'> fields with built-in tooltips </span>: <input type='text' title='Type your bank account and PIN numbers here, please ...' size=25> <input type='button' title='Go ahead. Press it. What's the harm? Trust me.' value='Press this button'> |
样例面 展示了浏览器如何呈现h title
属性的 HTML 元素。注意当光标在元素上Ud时工hC是如何出现和消q。文本框包含单的文本Q这些文本无M格式和样式。文本框会在光标短暂停留时弹出,q会在特定时间过后、鼠标从?HTML 元素Ud或单M某键的情况下H然消失。浏览器一ơ只昄一个文本框。工hC的外观和行为已l硬性设定到览器内Q无法更攏V?/p>
内置的工hC有很多可待提高之处,一些流行浏览器的最新版本ؓ构徏更ؓ_致的工hC提供了所需?“原料”。HTML Division 元素创徏了一个可在浏览器H口的Q何地Ҏ|的提示框。通过U联样式?CSS)Q您几乎可以讑֮框体外观的各个方面。用 JavaScript ~程实现的光标移动可以触发浏览器H口内Q意可视元素的特定动作。您q可以编制一个定时器来控制这些动作的序?
?样例面 可以扑ֈhq类工具提示的一?HTML 元素。如果运行的是流行浏览器的最新版本,您就可以更为精致的工具提示和内|的工具提示做一ҎQ?
![]() |
|
q些增强的行为和外观不仅有修饰的作用Q还可以提高可用性。面Ҏ数十个或数百个元素的J忙面Q用户很可能会错q即d出的工具提示。hcȝ视觉pȝ对运动的物体十分敏感Q因而也更容易注意到淡入视野q鼠标而动的工hC,即用户的注意力不在q儿也没关系。对比未格式化过的文本,囑փ、格式化和样式化能更有效C递信息。而且Q这些更为精致的工具提示的所有参数都是可配置的?/p>
本文后面的内容将着重于介绍如何?FadingTooltip 部件设计ؓ一个有限状态机。本pd的后l文章会为您展示如何实现和测试这些代码。如果您急于想知道这些代码,也可以在 参考资?/a> 部分扑ֈ到相?JavaScript 源代码和使用q些代码的一?HTML Web 面的链接?/p>
![]() ![]() |
![]()
|
![]() ![]() |
![]()
|
有限状态机是事仉动的Q需要在它们的运行时环境其与其相关的事件挂接v来。这可通过事g处理E序 实现Q事件处理程序是一些可插入到运行时环境的小的代码片D,一旦特定事件发生,q些处理E序׃执行。事件处理程序执行时Q需要获得如下一些基本信息:
JavaScript 十分适合于构Z仉动的有限状态机。事实上QJavaScript 有点太过适合 —?它有三种挂接事g的方式。每U?em>事g模型 都很直观明了Q但E序必须实现所有三U模型以保它们可以q行于所有流行的览器之上。事件的上下文在其中两个事g模型内被直接传递给事g处理E序Q对于另外一个模型,JavaScript 函数闭包允许事g的上下文被包裹进其事件处理程序?/p>
JavaScript 提供一U?em>对象模型Q对象模型是 Java ?C++ E序员所熟知的,它也可用来对有限状态机的变量和Ҏq行~码。而且QJavaScript 兌数组q允许直接对有限状态机的二l表q行~码?/p>
![]() ![]() |
![]()
|
有限状态机的基本要素是它所响应的事件及事g间的状态。设计必考虑到每个可能状态的每个可能事gQ?
我以 ?1 所C的一个图形来开始设计的q程Q图中气球Ş圆圈所C的是状态,q接q些圆圈的箭头线代表的是转移。最l获得的是一张表Q如 ?4 所C,在该表的标题行和标题列分别列Z事g和状态。表中的一些单元格列出了当特定事g在特定状态发生时所要执行的动作Q其它一些则表示在该状态下此事件不能发生?/p>
通常Q需要反复执行此设计q程才能获得正确的图和表。对h多个事g和状态的有限状态机Q这个过E可能会十分乏味Q每ơ重复都需要遵守一定的原则来系l地处理表中的每一个单元格。这q您不得不考虑在每个可能的情况下您所惌的动作。您可能会发现还可以q一步完善这些行为,也可能会发现所需的状态较预计的要多(或少Q,甚至会发现您必须重新整理单元格间的这些动作以正确定义每种情况下的行ؓ?/p>
q种设计有限状态机的系l过E虽然有些乏味但却十分值得?a cmimpressionsent="1">?4 所C的完成后的表给Z此行动的所有逻辑Qƈ可被直接转换Z码(参见 actionTransitionFunctions 源代码)?/p>
![]() ![]() |
![]()
|
要设?FadingTooltip 部Ӟ您需要了?JavaScript 的一些功能。在严}设计的原则指gQ我只在q里l出基本的设计思想Q而将具体的实现留待本pd后箋文章中介l?/p>
当光标经q页面中?HTML 元素Ӟ所有流行的览器都能将事g传递给 JavaScript 代码。这些事件是 mouseover?em>mousemove ?mouseoutQ分别代表光标已l移臟뀁移上和Ud HTML 元素。浏览器用这些事件传递光标当前位|。当事g发生Ӟ可用 JavaScript ~程动态创?HTML Division 元素Q用文本、图像和标记填充q些元素q将其定位到光标附近?/p>
览器ƈ没有原生的E入和淡出函数Q但可以通过改变 Division 元素的透明度(实际上是不透明度,透明度的反义词)来模拟这些函数?/p>
JavaScript 有两cd时器Q一ơ定时器在超时时生成 timeout 事gQ重复断l器定期生成 timetick 事g。FadingTooltip 部仉要这两种定时器?/p>
![]() ![]() |
![]()
|
首先回顾一下想要从 FadingTooltip 部件获得的基本行ؓ。当光标从特定的 HTML 元素上移q的时候,您可能想让此部件等待光标在该元素上暂停。如果可以如此,之后您可能又惌此小部g工hCE入,昄一会后再E出?/p>
有限状态机需要响应以下事Ӟ
您将需要设计状态机在事仉{待的一些状态。需要调用小部g的初始状?InactiveQ小部g在该状态下{待?mouseover 事gȀzR小部g?Pause 状态下{待直到 timeout 事g指示光标已经?HTML 元素上停留了_长的旉。之后在?timetick 事g动画式E入的同时Q小部g会在 FadeIn 状态下{待Q而又会在 Display 状态等待另一?timeout 事g。最后,在用更多 timetick 事g动画式E出的同时Q小部g会在 FadeOut 状态下{待。小部g转回?Inactive 状态,在此状态下{待另一?mouseover 事g?/p>
?1 是此q程相应的图形表C,其中的气球Ş圆圈代表状态,q接圆圈的箭头线代表转移Q箭头线上的标注代表事g。双层边界的圆圈代表初始状态?/p>
FadingTooltip 部件必针对它处理的每个事仉取动作:
?2 在触发这些动作的事g之下列出了这些动作?/p>
![]() ![]() |
![]()
|
上述的状态图是设计有限状态机的一个很好的开始。但表Ş式更适合于完成设计,原因是表可以l出事g和状态的所有组合以供参考?/p>
要将状态图转换成状态表Q可以在行标题内填上事g名,在列标题内填上状态名。这些名字的序是Q意的Q我在第一行的开始位|放入了初始状态,在第一列的开始位|放入了初始事gQ随后将动作和每一事g的下一状态复制到表中适当的单元格内,??3 所C?/p>
![]() ![]() |
![]()
|
要完成有限状态机的设计,需要顾及表中的每一个空单元根{您需要ؓ每个单元格做q样的考虑Q该事g是否可以发生在该状态,如果可以Q小部g在这U情况下采取什么动作,下一个状态又是什么。这虽然有些乏味Q但却是设计q程的必需部分?
考虑单元格的序先后关系不大。通常在设计过E中需要多ơ重复此步骤Q反复考虑每个单元|不时C改其内容Q而且每次的考虑序都会有所不同。另外随着设计的不断深入,dQ或删除Q状态、做q一步的修改也十分常见。在q里Q我蟩q这些反复过E,着重ȝ如何通过依次查看每个状态和事g来获得最l的l果表?/p>
在l之前,q应注意一下此状态的 mouseover 事g。当为此工具提示创徏 HTML Division 元素Ӟ需要将它定位于光标的附q,所以要保存光标的当前位|,当前位置由浏览器与此事g一同传递。而且在开始新的定时器之前Q最好能够取消Q何运行着的定时器。在 mouseover 对应的单元格内添加上q动作?/p>
在等待定时器时Ӟ光标可能会在 HTML 元素内移动或从此 HTML 元素Ud。需要决定一旦发生这些事件所应采取的动作以及下一个状态是什么。如果在此状态发?mouseout 事gQFadingTooltip 部件应能返?Inactive 状态,像光标从未l过 HTML 元素一P而且q必d消定时器。在 mouseout 对应的单元格记录q些动作和{UR?/p>
另一斚wQ对?mousemove 事gQ则需要小部g能够l箋{待光标悬停Q这又要求取消和重新开启定时器。因为想要让工具提示出现在光标的附近Q所以需要更新所保存的光标位|。Pause 状态下?mousemove 事g的动作和转移?Inactive 状态下?mousemove 事g的动作和转移相同。所以无需重复两个单元格的内容Q在 mousemove 对应的单元格内放上同L内容卛_。将此列的所有其他单元格标记?#8220;不应发生”?/p>
不要此单元格标Cؓ“不应发生”Q而是应该标示为无需M动作。如果光标又再次回到?HTML 元素Q将工具提示Ud光标q返?FadeIn 状态?/p>
?4 昄了所有这些动作和转移。剩下的I白单元格应标记?#8220;不应发生”?/p>
有限状态机的状态表L能{换回状态图Q因Z者是{h的?a cmimpressionsent="1">?5 昄了完整的状态表对应的状态图?/p>
![]() ![]() |
![]()
|
完成状态表和状态图之后Q很有必要对它再q行一ơ回来攉状态机在两事g间需要记录的变量以便状态机能够执行不同的单元格内的相应动作。有限状态机需?清单 2 中所C的状态变量?
currentState string value equal to one of the state names currentTimer pointer to timer object, obtained when set, used to cancel currentTicker pointer to ticker object, obtained when started, used to cancel currentOpacity float that varies from 0.0 (invisible) to 1.0 (fully visible) lastCursorPosition floats obtained from cursor events, used when an HTML Division element is created tooltipDivision pointer to HTML Division element, set when created, used when faded, moved, or deleted |
虽然 JavaScript 变量本n不区分类型,但变量所包含的值是区分cd的(q就是说QQ何类型的值都可以赋给变量Q。根据这一原则Q我列出了状态变量名q在注释部分l出了希望赋l这些变量的值的cd?/p>
下蝲
]]>