9.HTML5 JavaScript DHTML

来源:互联网 发布:化妆品真伪查询软件 编辑:程序博客网 时间:2024/04/30 00:23

1.DHTML模型

window对象

  • navigator
  • frames
  • location
  • history
  • document
    • all
    • body
    • forms
      • elements
    • anchors
    • links
    • images
    • ...
  • screen

<body id="bd"><a href="http://www.crazyit.org">疯狂Java联盟</a><br /><img id="lee" src="http://www.crazyit.org/logo.jpg"alt="疯狂Java联盟" /><br /><form><input type="text" name="user" value="文本框"/><br /><input type="button" id='bn' value="按钮"/></form><script type="text/javascript">// 访问body元素alert(document.body.id);// 访问第一个超链接alert(document.links[0].href);// 访问id或name为lee的图片alert(document.images['lee'].alt);// 访问页面的第一个表单form = document.forms[0];alert(form.innerHTML);// 访问表单里第一个元素alert(form.elements[0].value);// 访问表单里id或name为bn的元素alert(form.elements['bn'].value);// 下面的代码在Internet Explorer 6中可行alert(document.all['bn'].value);</script></body>


2.使用window对象

Window 对象属性

属性描述IEFOclosed返回窗口是否已被关闭。419defaultStatus设置或返回窗口状态栏中的默认文本。4No9document对 Document 对象的只读引用。请参阅 Document 对象。419history对 History 对象的只读引用。请参数 History 对象。419innerheight返回窗口的文档显示区的高度。NoNoNoinnerwidth返回窗口的文档显示区的宽度。NoNoNolength设置或返回窗口中的框架数量。419location用于窗口或框架的 Location 对象。请参阅 Location 对象。419name设置或返回窗口的名称。419Navigator对 Navigator 对象的只读引用。请参数 Navigator 对象。419opener返回对创建此窗口的窗口的引用。419outerheight返回窗口的外部高度。NoNoNoouterwidth返回窗口的外部宽度。NoNoNopageXOffset设置或返回当前页面相对于窗口显示区左上角的 X 位置。NoNoNopageYOffset设置或返回当前页面相对于窗口显示区左上角的 Y 位置。NoNoNoparent返回父窗口。419Screen对 Screen 对象的只读引用。请参数 Screen 对象。419self返回对当前窗口的引用。等价于 Window 属性。419status设置窗口状态栏的文本。4No9top返回最顶层的先辈窗口。419windowwindow 属性等价于 self 属性,它包含了对窗口自身的引用。419
  • screenLeft
  • screenTop
  • screenX
  • screenY
只读整数。声明了窗口的左上角在屏幕上的的 x 坐标和 y 坐标。IE、Safari 和 Opera 支持 screenLeft 和 screenTop,而 Firefox 和 Safari 支持 screenX 和 screenY。419


Window 对象方法

方法描述IEFOalert()显示带有一段消息和一个确认按钮的警告框。419blur()把键盘焦点从顶层窗口移开。419clearInterval()取消由 setInterval() 设置的 timeout。419clearTimeout()取消由 setTimeout() 方法设置的 timeout。419close()关闭浏览器窗口。419confirm()显示带有一段消息以及确认按钮和取消按钮的对话框。419createPopup()创建一个 pop-up 窗口。4NoNofocus()把键盘焦点给予一个窗口。419moveBy()可相对窗口的当前坐标把它移动指定的像素。419moveTo()把窗口的左上角移动到一个指定的坐标。419open()打开一个新的浏览器窗口或查找一个已命名的窗口。419print()打印当前窗口的内容。519prompt()显示可提示用户输入的对话框。419resizeBy()按照指定的像素调整窗口的大小。419resizeTo()把窗口的大小调整到指定的宽度和高度。41.59scrollBy()按照指定的像素值来滚动内容。419scrollTo()把内容滚动到指定的坐标。419setInterval()按照指定的周期(以毫秒计)来调用函数或计算表达式。419setTimeout()在指定的毫秒数后调用函数或计算表达式。419




要引用窗口中的一个框架,可以使用如下语法:

frame[i]//当前窗口的框架self.frame[i]//当前窗口的框架w.frame[i]//窗口 w 的框架

要引用一个框架的父窗口(或父框架),可以使用下面的语法:

parent//当前窗口的父窗口self.parent//当前窗口的父窗口w.parent //窗口 w 的父窗口

要从顶层窗口含有的任何一个框架中引用它,可以使用如下语法:

top//当前框架的顶层窗口self.top//当前框架的顶层窗口f.top//框架 f 的顶层窗口

新的顶层浏览器窗口由方法 Window.open() 创建。当调用该方法时,应把 open() 调用的返回值存储在一个变量中,然后使用那个变量来引用新窗口。新窗口的 opener 属性反过来引用了打开它的那个窗口。

一般来说,Window 对象的方法都是对浏览器窗口或框架进行某种操作。而 alert() 方法、confirm() 方法和 prompt 方法则不同,它们通过简单的对话框与用户进行交互。


<body id="bd"><a href="http://www.crazyit.org">疯狂Java联盟</a><br /><img id="lee" src="http://www.crazyit.org/logo.jpg" alt="疯狂Java联盟" /><br /><form><input type="text" name="user" value="文本框"/><br /><input type="button" id='bn' value="按钮"/></form><script type="text/javascript">// 访问body元素alert(document.body.id);// 访问第一个超链接alert(document.links[0].href);// 访问id或name为lee的图片alert(document.images['lee'].alt);// 访问页面的第一个表单form = document.forms[0];alert(form.innerHTML);// 访问表单里第一个元素alert(form.elements[0].value);// 访问表单里id或name为bn的元素alert(form.elements['bn'].value);// 下面的代码在Internet Explorer 6中可行alert(document.all['bn'].value);</script></body>

<script type="text/javascript">//修改窗口的状态栏文字。window.status="自定义状态栏文字";</script>

2.1 访问历史

  • window.history.back()
  • window.history.foward()
  • window.history.go(intValue)前进或后退intValue。


2.2 访问页面URL

window.loaction.hostname:主机名称

window.loaction.href

window.loaction.host:主机地址

window.loaction.port

window.loaction.pathname:文件地址

window.loaction.protocol:装载该文档的协议

<script type="text/javascript">var loc = window.location;var locStr = "当前的location信息是:\n";// 遍历location对象的全部属性for (var propname in loc){locStr += propname + ": " + loc[propname] + "\n"}alert(locStr);</script>

2.3 主机屏幕信息

<script type="text/javascript">alert(window.screen);var str = "当前的屏幕信息是:\n";// 遍历screen对象的所有属性for(var propname in window.screen){str += propname + ": " + window.screen[propname] + "\n"}alert(str);</script>

2.4 弹出窗口

<script type="text/javascript">// 获取当前屏幕的大小var width = window.screen.width;var height = window.screen.height;// 打开一个新的满屏窗口window.open("status.html", "_blank", "left=0, top=0, width=" + width + ", height=" + height  + ", toolbar = no, menubar = no, resize = no");// 关掉自身window.close();</script>

2.5 确认对话框和输入对话框

<a href="http://www.crazyit.org" onClick= "return confirm('请确认是否导航到疯狂Java联盟');">疯狂Java联盟</a>
你的名字是:<span id="name"></span><script type="text/javascript">name = prompt("请输入你的名字:" ,"");document.getElementById("name").innerHTML = name;</script>

2.6 使用定时器

<body onload="setTime();"><span id="tm"></span><script type="text/javascript">// 定义定时器变量var timer;// 保存页面运行的起始时间var cur = new Date().getTime(); var setTime = function(){// 在tm元素中显示当前时间document.getElementById("tm").innerHTML =  new Date().toLocaleString();// 如果当前时间比起始时间大于60秒,停止定时器的调度if (new Date().getTime() - cur > 60 * 1000){// 清除timer定时器clearInterval(timer);}}// 指定每隔1000毫秒执行setTime()函数一次timer = setInterval("setTime();" , 1000);</script></body>

<body><span id="tm"></span><script type="text/javascript">// 定义定时器变量var timer;// 保存页面运行的起始时间var cur = new Date().getTime(); var setTime = function(){// 在tm元素中显示当前时间document.getElementById("tm").innerHTML= new Date().toLocaleString();// 如果当前时间比起始时间小于等于60秒,执行定时器的调度if (new Date().getTime() - cur <= 60 * 1000){// 指定延迟1000毫秒后执行setTime()函数。window.setTimeout("setTime();" , 1000);}}// 直接调用setTime()函数setTime();</script></body>

2.7 navigator和地理位置

不同平台的信息并不完全相同。

<script type="text/javascript">alert(window.navigator);var browser = "当前的浏览器信息是:\n";// 遍历该浏览器的全部属性for(var propname in window.navigator){// 将所有属性名、属性值连缀在一起browser += propname + ": " + window.navigator[propname] + "\n"}alert(browser); </script>


2.7.1 geolocation属性

Geolocation对象

  • getCurrentPosition(onSuccess,onError,options)
  • int watchCurrentPosition(onSuccess,onError,options)

返回监视器的标识id。相当于周期性调用getCurrentPosition方法。

  • clearWatch(watchId):用于停止持续监听地理位置。

2.7.1.1 获取成功的回调函数onSuccess

function (position){}

position包含属性

  • timestamp
  • coords
    • longitude:经度
    • latitude:纬度
    • altitude:高度
    • accuracy:返回经纬度的精确值,以米为单位。
    • altitudeAccuracy:返回高度的精确值,以米为单位。
    • speed:移动速度或null。
    • heading:移动方向,以正北方向顺时针转过的角度来表示。
    • timestamp:获取地理位置的时间戳

2.7.1.2 获取失败的回调函数onError

function (error){}

  • code:返回错误代码
    • 用户拒绝位置服务
    • 无法获取地理位置
    • 获取地理位置信息超时
  • message

2.7.1.3 其他选项options

该参数是一个js对象,支持以下属性

  • enableHightAccuracy:指定是否要求高精度的地理位置信息。
  • timeout:获取地理位置的超市时间。
  • maximumAge:地理信息的缓存时间。


2.7.2 获取地理位置

<script type="text/javascript">var geoHandler = function(position){var geoMsg = "用户的所在的地理位置信息是:<br/>";geoMsg += "timestamp属性为:" + position.timestamp + "<br/>";// 获取Coordinates对象,该对象里包含了详细的地理位置信息var coords = position.coords;// 遍历Coordinates对象的所有属性for(var prop in coords){geoMsg += prop + "-->" + coords[prop] + "<br/>";}// 输出地理位置信息document.writeln(geoMsg);}var errorHandler = function(error){// 为不同错误代码定义错误提示var errMsg = {1: '用户拒绝了位置服务',2: '无法获取地址位置信息',3: '获取地理位置信息超时'};// 弹出错误提示alert(errMsg[error.code]);}// 获取地理位置信息navigator.geolocation.getCurrentPosition(geoHandler, errorHandler, {enableHighAccuracy:true,maximumAge:1000});</script>


2.7.3 在google Map上定位

https://developers.google.com/maps/documentation/javascript/basics

<!DOCTYPE html><html><head><meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" /><meta http-equiv="Content-Type" content="text/html; charset=GBK" /><title> 在地图上定位 </title><style type="text/css">html { height: 100% }body { height: 100%; margin: 0px; padding: 0px }#map_canvas { height: 100% }</style><script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script><script type="text/javascript">function initialize() {navigator.geolocation.getCurrentPosition(function(position){// 获取浏览器提供的地理位置信息var latlng = new google.maps.LatLng(position.coords.latitude , position.coords.longitude);// 设置创建Google地图的选项var myOptions = {zoom: 16,center: latlng,mapTypeId: google.maps.MapTypeId.ROADMAP};// 获取页面上的map_canvas组件var mapDiv = document.getElementById("map_canvas");// 创建Google地图,指定把地图显示到mapDiv组件上var map = new google.maps.Map(mapDiv , myOptions);// 在地图上创建标记var marker = new google.maps.Marker({position: latlng,animation: google.maps.Animation.BOUNCE,map: map});// 设定标注窗口,并指定该窗口中的注释文字var info = new google.maps.InfoWindow({  content: "我在这里!"});// 打开标注窗口info.open(map, marker);},function(error){alert("您的浏览器没有提供地理位置信息!");},{enableHighAccuracy:true,maximumAge:1000});}</script></head><body onload="initialize()"><div id="map_canvas" style="width:100%; height:100%"></div></body></html>

 


2.8 document对象

Document 对象

每个载入浏览器的 HTML 文档都会成为 Document 对象。

Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

提示:Document 对象是 Window 对象的一部分,可通过 window.document 属性对其进行访问。

IE: Internet Explorer, F: Firefox, O: Opera, W3C: W3C 标准.


Document 对象集合

集合描述IEFOW3Call[]提供对文档中所有 HTML 元素的访问。419Noanchors[]返回对文档中所有 Anchor 对象的引用。419Yesapplets返回对文档中所有 Applet 对象的引用。----forms[]返回对文档中所有 Form 对象引用。419Yesimages[]返回对文档中所有 Image 对象引用。419Yeslinks[]返回对文档中所有 Area 和 Link 对象引用。419Yes

Document 对象属性

属性描述IEFOW3Cbody

提供对 <body> 元素的直接访问。

对于定义了框架集的文档,该属性引用最外层的 <frameset>。

    cookie设置或返回与当前文档有关的所有 cookie。419Yesdomain返回当前文档的域名。419YeslastModified返回文档被最后修改的日期和时间。41NoNoreferrer返回载入当前文档的文档的 URL。419Yestitle返回当前文档的标题。419YesURL返回当前文档的 URL。419Yes

Document 对象方法

方法描述IEFOW3Cclose()关闭用 document.open() 方法打开的输出流,并显示选定的数据。419YesgetElementById()返回对拥有指定 id 的第一个对象的引用。519YesgetElementsByName()返回带有指定名称的对象集合。519YesgetElementsByTagName()返回带有指定标签名的对象集合。519Yesopen()打开一个流,以收集来自任何 document.write() 或 document.writeln() 方法的输出。419Yeswrite()向文档写 HTML 表达式 或 JavaScript 代码。419Yeswriteln()等同于 write() 方法,不同的是在每个表达式之后写一个换行符。419Yes


2.8.1 动态页面

<!DOCTYPE html><html><head><meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" /><meta http-equiv="Content-Type" content="text/html; charset=GBK" /><title> 动态页面 </title></head><body><script type="text/javascript">// 计数器var n = 0;var win = null;// 用于显示弹出窗口显示提示信息的函数var show = function(msg){// 判断弹出窗口是否为空if ((win == null) || (win.closed)) {// 打开一个新的弹出窗口win = window.open("","console" ,"width=340,height=220,resizable");// 将弹出窗口的文档打开成一个text/html文档win.document.open("text/html");}// 让弹出窗口得到焦点win.focus();// 在弹出窗口装载的文档中输出信息win.document.writeln(msg); }</script><!-- 激发事件的按钮 --><input type="button" value="单击" onclick="show('您单击了按钮:' + ++n + '次。<br/>');"></body></html>


2.8.2 读写cookie

<script type="text/javascript">var setCookie = function(name , value){// 定义变量,保存当前时间var expdate = new Date();// 将expdate的月份 + 1。expdate.setMonth(expdate.getMonth() + 1);// 添加Cookiedocument.cookie = name + "=" + escape(value) ; + "; expires=" + expdate.toGMTString() +  ";";}var getCookie = function(name) {// 访问Cookie的name开始处var offset = document.cookie.indexOf(name)// 如果找到指定Cookieif (offset != -1) {// 从Cookie名后位置开始搜索offset += name.length + 1;// 找到Cookie名后第一个分号(;)end = document.cookie.indexOf(";", offset) ;// 如果没有找到分号if (end == -1){end = document.cookie.length;}// 截断字符串中Cookie的值return unescape(document.cookie.substring(offset, end));}else{return "";}}setCookie('user' , 'crazyit.org');alert(getCookie('user'));</script>



2.9 HTML5新增的浏览器分析

2.9.1 分析时间性能

<!DOCTYPE html><html><head><meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" /><meta http-equiv="Content-Type" content="text/html; charset=GBK" /><title> 分析页面加载时间 </title><script type="text/javascript">// 记录进入页面的时刻var start = new Date().getTime();var load = function(){// 获取页面加载完成时的时刻。var now = new Date().getTime();var page_load_time = now - start;alert("页面加载时间: " + page_load_time);}</script></head><body onload="load();"><img src="http://www.crazyit.org/logo.jpg" alt="疯狂Java联盟"/></body ></html>


performance.timing包含了进入该页面的时刻。

PerformanceTiming 接口包含了当前页面中与时间相关的信息.

Performance.timing 只读属性会返回这样的一个对象.

属性

Performance 接口不包含任何继承属性.

PerformanceTiming.navigationStart Read only
Is an unsigned long long representing the moment, in miliseconds since the UNIX epoch, right after the prompt for unload terminated on the previous document in the same browsing context. If there is no previous document, this value will be the same asPerformanceTiming.fetchStart.
PerformanceTiming.unloadEventStart Read only
Is an unsigned long long representing
PerformanceTiming.unloadEventEnd Read only
Is an unsigned long long representing
PerformanceTiming.redirectStart Read only
Is an unsigned long long representing
PerformanceTiming.redirectEnd Read only
Is an unsigned long long representing
PerformanceTiming.fetchStart Read only
Is an unsigned long long representing
PerformanceTiming.domainLookupStart Read only
Is an unsigned long long representing
PerformanceTiming.domainLookupEnd Read only
Is an unsigned long long representing
PerformanceTiming.connectStart Read only
Is an unsigned long long representing
PerformanceTiming.connectEnd Read only
Is an unsigned long long representing
PerformanceTiming.secureConnectionStart Read only
Is an unsigned long long representing
PerformanceTiming.navigationStart Read only
Is an unsigned long long representing
PerformanceTiming.navigationStart Read only
Is an unsigned long long representing
PerformanceTiming.requestStart Read only
Is an unsigned long long representing
PerformanceTiming.responseStart Read only
Is an unsigned long long representing
PerformanceTiming.responseEnd Read only
Is an unsigned long long representing
PerformanceTiming.domLoading Read only
Is an unsigned long long representing
PerformanceTiming.domInteractive Read only
Is an unsigned long long representing
PerformanceTiming.domContentLoadedEventStart Read only
Is an unsigned long long representing
PerformanceTiming.domContentLoadedEventEnd Read only
Is an unsigned long long representing
PerformanceTiming.domComplete Read only
Is an unsigned long long representing
PerformanceTiming.loadEvenStart Read only
Is an unsigned long long representing
PerformanceTiming.loadEventEnd Read only
Is an unsigned long long representing

<!DOCTYPE html><html><head><meta name="author" content="Yeeku.H.Lee(CrazyIt.org)" /><meta http-equiv="Content-Type" content="text/html; charset=GBK" /><title> 分析页面加载时间 </title><script type="text/javascript">var load = function(){// 记录页面加载完成时的时刻var now = new Date().getTime();var page_load_time = now - performance.timing.navigationStart;alert("页面加载时间: " + page_load_time);}</script></head><body onload="load();"><img src="http://www.crazyit.org/logo.jpg" alt="疯狂Java联盟"/></body ></html>


2.9.2 分析导航行为

<script type="text/javascript">switch (performance.navigation.type){case 0:alert("正常导航到该页面!");break;case 1:alert("用户重新加载该页面!");break;case 2:alert("用户“前进”到该页面!");break;default :alert("其他方法进入该页面!");break;}</script>




0 0
原创粉丝点击