网络编程
位置:首页>> 网络编程>> JavaScript>> 现代 javscript 编程(5)

现代 javscript 编程(5)

作者:moart0 来源:蓝色经典 发布时间:2011-04-21 16:24:00 

标签:javscript,编程

  Unobtrusive DOM脚本编程
  
  基于一个优良的可测试的核心创建你的代码和兼容的分发,是Unobtrusive DOM脚本编程的基本概念。编写unobtrusive代码意味着与你的HTML内容的彻底分离:数据来自服务器,而JavaScript代码用来使其动态化。达到这一彻底分离的最重要的副作用就是你的代码在不同的浏览器之间可以完美的升/降级。利用这一点,你可以提供高级的内容给支持它的浏览器,而在不支持的浏览器上从容隐藏之。
  编写现代的、Unobtrusive代码包括两个方面:文档对象模型(DOM)和JavaScript事件。本书中我对这两个方面都将作深入的解释。

  文档对象模型

  DOM是表示XML文档的流行的方法。它未必是最快的、最轻便的、或者最易使用的,却是是最普及的,绝大多数web开发语言(如Java,Perl,PHP,Ruby,Python,及Javascript)都实现了对它的支持。DOM旨在为开发者提供一种直观的方式来导航于XML的层次结构中。
  因为有效的HTML只是XML的一个子集,保有一个方式来有效地解析和浏览DOM文档对于简化JavaScript开发来说是必不可少的。从根本上讲,出现在JavaScript中的大多数的交互是发生在JavaScript与页面所包含的不同HTML元素之间的;DOM是使这此过程简单化的卓越工具。程序1-4展示了使用DOM在页内导航和查找不同的元素然后操作它们的一些例子。

  程序1-4. 使用文档对象模型定位并操纵不同的DOM元素


<html>
<head>
<title>Introduction to the DOM</title>
<script>
//直到文档完全载入,我们才能操作DOM
window.onload = function() {
  //找到文档中所有的<li>元素
  var li = document.getElementsByTagName("li");
  //然后给它们全部加上边框
  for ( var j = 0; j< li.length; j++ ) {
    li[j].style.border = "1px solid #000";
  }
  //定位ID为'everywhere'的元素
  var every = document.getElementById( "everywhere" );
  //并将它从文档中移除
  every.parentNode.removeChild( every );
};
</script>
</head>
<body>
  <h1>Introduction to the DOM</h1>
  <p class="test">There are a number of reasons why the DOM is awesome,
    here are some:</p>
  <ul>
    <li id="everywhere">It can be found everywhere.</li>
    <li class="test">It's easy to use.</li>
    <li class="test">It can help you to find what you want,
      really quickly.</li>
  </ul>
</body>
</html>


  DOM是开发Unobtrusive JavaScript代码的第一步。借助简单快速导航HTML文档的能力,所有随之而来的JavaScript/HTML交互将变得如此简单。
  

  事件

  事件将一个应用程序之内所有的用户交互结合在一起。在一个设计良好的JavaScript应用程序里,你将拥有数据源和它的视觉的表示(在HTML DOM内部)。为了同步这两个方面,你必须监视用户的交互动作并试图相应地更新用户界面。使用DOM和JavaScript事件的结合是使得现代web应用程序赖以工作的基本组合。
  所有的现代浏览器都提供一系列的只要特定交互动作发生即被触发的事件,如用户移动鼠标,敲击键盘,或离开页面等等。使用这些事件,你可以注册代码到特定事件,一旦该事件发生,你的代码就会被执行。程序1-5展示了这种交互的一个实例,该网页中的<li>元素在用户鼠标经过的时候会改变背景色。

  程序1-5. 使用DOM和事件来提供一些视觉效果


<html>
<head>
<title>Introduction to the DOM</title>
<script>
//直到文档完全载入,我们才能操作DOM
window.onload = function(){
    //查找所有的<li>元素,附以事件处理程序
    var li = document.getElementsByTagName("li");
    for ( var i = 0; i < li.length; i++ ) {
        //将鼠标移入事件处理程序附在<li>元素上,
        //该程序改变<li>背景颜色为蓝色
        li[i].onmouseover = function() {
            this.style.backgroundColor = 'blue';
        };
        //将鼠标移出事件处理程序附在<li>元素上,
        //该程序将<li>的背景颜色改回白色
        li[i].onmouseout = function() {
            this.style.backgroundColor = 'white';
        };
    }
};
</script>
</head>
<body>
  <h1>Introduction to the DOM</h1>
  <p class="test">There are a number of reasons why the DOM is awesome,
    here are some:</p>
  <ul>
    <li id="everywhere">It can be found everywhere.</li>
    <li class="test">It's easy to use.</li>
    <li class="test">It can help you to find what you want,
      really quickly.</li>
  </ul>
</body>
</html>


  JavaScript事件是复杂多样的。本书中的大多数代码或应用程序都以某种方式利用了事件。第六章和附属B完全专注于事件及其交互。

  JavaScript与CSS

  动态HTML建立在DOM和事件交互的基础上。在核心层面上,动态HTML表示发生在JavaScript和附着在DOM元素上的CSS信息的交互。
  层叠式样式表(CSS)作为布局的标准服务于简单的不唐突的网页,在最小化了用户端兼容性问题的同时,提供给开发者以强大的可控制性。从根本上讲,动态HTML就是探索JavaScript和CSS彼此交互作用时能够达到什么以及怎样最好地利用该联合达成令人印象深刻的效果。
  更高级的交互示例如拖放元素和动画效果见第七章。在那里我将围绕它们展开深入论述。

0
投稿

猜你喜欢

  • 很多朋友对FrontPage2003中增加的网页布局功能很感兴趣,现在我们一起来深入了解这一实用功能。用FrontPage2003的“布局表
  • 创建用户定义函数,它是返回值的已保存的 Transact-SQL 例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。与系统函数一样
  • UPA2008于2008年10月24日在深圳举行,托哥、绿桔应邀主持了一场圆桌会和一场工作坊,以下是圆桌会议《商业价值与用户价值的平衡》的现
  •  这是个删除非空目录的例子test.asp要执行删除你需要对该目录具有修改权限<% dim fso,tmpfold
  • 在最近一次项目有一个需求,点击按钮——异步提交——异步响应返回——根据响应返回值新开窗口。这有两个要点:异步响应之前不知道要打开窗口的URL
  • 介绍:细处着手,巧处用功。高手和菜鸟之间的差别就是:高手什么都知道,菜鸟知道一些。电脑小技巧收集最新奇招高招,让你轻松踏上高手之路。 摘 要
  • 这个仿msn的右下角popup提示窗口效果很久以前收集的,现在整理出来给大家分享,需要的朋友可以拿去用,特点,提示窗口内容和js代码分离容易
  • 在本文上两篇中,我们学习了脚本语言 VBScript 的变量、函数、过程和条件语句,本篇将继续给大家介绍 VBScipt 的循环语句,并对脚
  • 为什么传输几千个表的数据时向导会失败?当前的向导体系结构会创建一个 DTS 软件包数据流以传输数据。但如果要处理几千个表,则会遇到可伸缩性限
  • 如果使用注释的方法得当的话,为你的CSS文件添加注释可以在开发过程中给予你和其他人很大的帮助。最常见的是为CSS样式规则添加提示信息,不过使
  • 大家知道直接使用ASP是不能够重启服务器的,这时我们需要制作一个组件来实现功能,ASP通过这个组件调用系统API,然后按照不同的重启和关机方
  • 这阵子没有精力完整翻译和发到译言(  现下正渐入状态,预计写博客量会逐步提升回来),简短做一个概要翻译,为近期工作需要做一个参考。
  • 我来讲解属性部分, 这是相当有用的, 可要认真上课.首先,jquery中对html标签属性进行操作的关键词是 attr .没错,就4个字母,
  • 在注册或购物车结帐的时候,需要用户填入个人资料,这个环节可以简练一下,我们只需客人填入邮政编码,然后就根据这个邮政编码,自动从数据库中取出相
  • 首先来看,ASP读取ACCESS数据库。代码如下:<% @language="VBScript"&nbs
  •  相信大家从去年圣诞节开始,逐渐发现淘宝网首页的标志开始有了新的形式,从过往的静态图片节日LOGO变成了FLASH的动画小故事LO
  • 在中文网页中最常见的网页编码就是GB2312和UTF-8了,本文介绍了ASP实现GB2312编码转换为UTF-8编码的函数:Function
  • 对网站的LOGO设计做了一些归纳,希望得到批评,发现写的太长了,又不忍心删减,就分成两部分了,第一部分是有关设计基础的。第二部分是关于网站L
  • 在jQuery的官方文档中,提示用户这是一个低级的方法,应该用.data()方法来代替。$.data( element, key, valu
  • 通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割
手机版 网络编程 asp之家 www.aspxhome.com