ppk on JavaScript-背景

javascript

JavaScript为网页而存在,它会被嵌入到一个同时使用HTML和CSS的环境中,而此环境中不可缺少可用性和无障碍。总而言之,脚本必须给站点增加用处,而站点在JavaScript失灵或者根本不存在的情况下依然能继续工作。兼容标准的CSS革命改变了Web开发,JavaScript编程也受到这场运动的巨大影响。

CSS革命

1998年,在Netscape和IE4无法达成任何协议时,一些先天下之忧而忧的Web开发者组成了 Web Standards Project(Web标准工程,简称WaSP),为解决JavaScript某些荒唐的私有元素,并推动使用CSS来定义网站的外观。她们的重要使命是“追随标准”,不仅针对浏览器厂商,而且号召Web开发者。

最初,WaSP及其支持者专注于CSS. 究其原因,CSS是一门比较新的技术,尚未被乱七八糟的东西污染,更容易成为历史的一个转折点,JavaScript就没有这么幸运了,那时候的 JavaScript,无论是编程,还是人们对它的想法,都是完全非无障碍的。这也是导致某些标准支持者产生“JavaScript就是障碍”观念的原因,无论是过去还是现在。其实,JavaScript和无障碍可以和谐共存,只要您稍微谨慎。

Unobtrusive脚本编程

2002年,Stuart Langridge创造出Unobtrusive脚本编程(unobtrusive scripting, Stuart Langridge的原文),这是首次重要的尝试——在基于CSS,标准兼容的新理论中嵌入JavaScript.

Unobtrusive脚本应该具备一下所有的特征:

  • 可用性,比如,赋予网站明确的可用性好处;
  • 无障碍,比如,假使JavaScript失效,页面应该保持可读和可理解,尽管不可避免地丧失某些可用性;
  • 容易实现,一个经典案例是,Web开发者只需把脚本引入和增加一个JavaScript调用钩子(hook),脚本就起作用;
  • 分离,属于本身的.js文件而不是散落在HTML的各个角落。

理论上说,第一条自JavaScript诞生之日起就有的,但是经常会被程序员在炫耀JavaScript能力的热忱中忽略。如果没有可用性多酷都无关紧要。

其他三条都是新的。通常都认为无障碍和JavaScript是互斥的。容易的实现需要JavaScript钩子,W3C DOM的降临使之成为可能。分离,是偷师于CSS革命的。如果需要分离HTML和CSS, 逻辑上,也应该把JavaScript从它们中分离。

三个层面

网页包含三个层次(没错,它们都需要各自分离):

  1. HTML结构
  2. CSS表现
  3. JavaScript行为

HTML结构层是网页最重要的基础。HTML标签给予内容含义。CSS表现层则是定义您的HTML该如何显示。JavaScript行为层为页面增加交互。

不管如何,一个网页必需HTML结构层。没有HTML,没有网页。CSS和JavaScript都是可选项,旧的,无名的,罕见的浏览器可能不支持 CSS和/或JavaScript,在这种情形下,这两层或其中一层都不起作用。后果是显而易见的,任何网站应能在行为层(或者表现层,但这种情形相比较少)的缺席下还能“存活”。也就是说,网站不能完全依赖于JavaScript,但要保证无障碍即使JavaScript不起作用。

分离的关系

一般来说,最好单独管理好每一层。最基础的,确保:

  • HTML是结构性的,不要太复杂,没有CSS和JavaScript下保持语义。
  • CSS表现层和JavaScript表现层分别归属于独自的.css.js文件。

分离更容易维护。您可以轻而易举地把分离的文件连接到整站的网页上,简单举个例子,您需要把字体从12px改成0.8em,您只需打开CSS文件编辑它,这样网页变化即刻生效。除此之外,分离让您可以不需修改HTML结构层或者JavaScript行为层,只需修改整个CSS表现层就可让网站换上新衣。

分离表现和结构

表现和结构分离的基本思想是确保HTML定义结构,只有结构,所有的表现都定义到分离的CSS文件中去。不再允许font标签或者表现性的表格!在一本JavaScript的书中似乎没有什么余地来探讨CSS和HTML的分离。那么我们就来说说这个分离对我们编写JavaScript代码方式的影响吧。

CSS更改

JavaScript可以让您修改CSS,比如,您可以在CSS定义一个连接为红色,然后用JavaScript控制CSS再定义为绿色。有时候这是很有用的,样式的变化会使用户能注意变化的HTML的元素,比如出错信息。如果没有正确地分离CSS表现层,CSS更改将会变得十分困难。改变元素的className通常是最佳的CSS更改方式。如下例子,假如表单验证程序发现用户输入错误,则改变该表单字段的class:

// obj is the form fieldobj.className += ' errorMessage';// in CSSinput.errorMessage {    border: 1px solid #cc0000;}

只有您正确分离了表现和结构,这样的方式才会起作用。class errorMessage必须定义在CSS中为了实现样式的更改,反过来,也只有您一开始就从正确的CSS表现层开始才有可能(或者说,可行)。

修改结构还是表现

JavaScript实际上允许您改变网站的表现,也允许您改变HTML文档。用户并不关心我们改了什么。但还是有所不同的。改变一个应答用户行为的表单应该是修改结构而不是表现。相关表单元素不应该只是从视觉上隐藏而已,而应该从文档结构中移除。当一个表单提交时,浏览器为所有表单元素创建名称/ 值配对,并发送给服务器。如果仅仅是在CSS中隐藏,这些字段依然是表单的组成部分,尽管可能不是服务器所需要的。这只是理论上的东西,您可以不同意我。

分离行为和结构

分离行为与结构很容易理解:不要把任何JavaScript代码写入HTML页面中。采取这两步:

  • 把所有的JavaScript函数定义在一个分离的.js文件中,让所需的HTML页面连接到它。
  • 删除所有的事件处理句柄(注:即行内的那些诸如onmouseover)并归入同一.js文件中去。

分离文件中的函数

JavaScript代码属于.js文件,而非HTML文件。

所以这是错误的:

<script type="text/javascript"> function doAllKindsOfNiftyThings() {     // JavaScript code } </script> </head> <body> <h1>My HTML page</h1> [etc.]

这才是正确的:

</head><body><h1>My HTML page</h1>[etc.]// 定义在分离的nifty.js中function doAllKindsOfNiftyThings(){    // JavaScript code}

删除事件处理句柄

第二步是把所有HTML内的JavaScript函数调用移到分离的.js中去。事实上,99%的HTML内的JavaScript代码是行内事件句柄。

以下,句柄在HTML内,但不应该属于HTML的:

<a href="home.html"  >Home</a>

应该定义在分离的.js文件中去:

<a href="home.html">Home</a>// in separate .js filevar nav = document.getElementById('navigation');var navLinks = nav.getElementsByTagName('a');for (var i=0;i<navLinks.length;i++){    navLinks[i].onmouseover = [code];    navLinks[i].onmouseout = [code];}

该脚本处理id="navigation"的元素并处理其内的所有连接,然后再赋予连接事件处理句柄。

javascript:伪协议

有些情况下你会看到像以下的javascript:伪协议:

<a href="javascript:doAllKindsOfNiftyThings()">Do Nifty!</a>

这个复杂肮脏代码隐藏的含义是一个onclick事件句柄:当用户点击该连接,我们需要的是呼叫doAllKindsOfNiftyThings()函数。所以您应该从该连接中删除javascript:呼叫而用一个独立.js文件中的onclick事件句柄来取代之:

<a href="somepage.html" id="nifty">Do Nifty!</a>// in separate .js filedocument.getElementById('nifty').onclick = doAllKindsOfNiftyThings;

因此,对于href,应该包含一个完整的url以备没script的用户能够访问,否则整条连接都由JavaScript产生,不具备无障碍性。

[1] [2] 下一页

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索javascript
, css
, html
, javascript html
, 文件
, 结构
, javascript +html
, ppk
, html javascript
, 对记录中元素的分离
, 服务器html css
, html css javascript
, 分离
javascript+css
瓦尔特ppk、ppk枪、气孔式枪管、跑跑卡丁车、ppk计算公式,以便于您获取更多的相关知识。

时间: 2024-08-31 14:13:02

ppk&nbsp;on&nbsp;JavaScript-背景的相关文章

javascript背景时钟实现方法

  本文实例讲述了javascript背景时钟实现方法.分享给大家供大家参考.具体如下: 以下是这个效果的全部代码.[最好从一个空页面开始] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 <html> <head> <TITLE>背景时钟</TITLE> <script language=javaScri

javascript背景时钟实现方法_javascript技巧

本文实例讲述了javascript背景时钟实现方法.分享给大家供大家参考.具体如下: 以下是这个效果的全部代码.[最好从一个空页面开始] <html> <head> <TITLE>背景时钟</TITLE> <script language=javaScript> <!--// function clockon() { thistime= new Date() var hours=thistime.getHours() var minutes

javascript设置页面背景色及背景图片的方法_javascript技巧

本文实例讲述了javascript设置页面背景色及背景图片的方法.分享给大家供大家参考,具体如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus

精通Javascript+jQuery 视频教程 在线观看_jquery

JavaScript/CSS/DOM基础 第0课 - 内容概述 第1课 - JavaScript背景知识 第2课 - JavaScript基础 第3课 - CSS基础 第4课 - CSS进阶 第5课 - DOM模型 JavaScript开发进阶 第6课 - JavaScript事件 第7课 - 表格与表单 第8课 - Javascript调试与优化 第9课 - Ajax jQuery应用 第10课 - jQuery基础 第11课 - jQuery控制页面 第12课 - jQuery动画特效 第1

3个步骤实现简单语言解释器(自制简易编程语言)

本文讲的是3个步骤实现简单语言解释器(自制简易编程语言), 前段时间,我用javascript重新编写了一个16位的虚拟机,用它实现了一个定制的CPU架构和汇编语言,汇编器和调试器.虽然从头编一个语言可以完全实现自己的自定义目标,但过程却及其复杂.为了使自己的编程过程更有效率,我决定使用Lel(布局表达式语言,Layout Expression Language,LEL). 本文将深入研究怎样用一个简单的方法来编写一个编程语言解释器,由于所有Lel的代码都是开放的,可以在github上使用. 解

《Angular从零到一》导读

本节书摘来自华章出版社<Angular从零到一>一书中作者Richard Banfield 著 易艺 译   前 言 一个大叔码农的Angular 2创世纪 作为一个出生于20世纪70年代的大叔,我在软件这个领域已经摸爬滚打了16年,从程序员.项目经理.产品经理,项目总监,到部门管理等各个角色都体验过,深深地了解到这个行业发展的速度之快是其他行业无法比拟的:从编程语言.各种平台.各种框架.设计模式到各类开源工具.组件林林总总,要学习的东西实在太多,因为变化太快. 但万变不离其宗,名词变化虽多,

谈谈css左右等高的几个方法

等高布局的使用场景有很多,很多时候为了满足某列的背景或者边框跟外框高度一样,并且不受其他列动态变化高度的影响.一般我会考虑几种方式: 一.负margin实现  代码如下 复制代码 .row-wrap { overflow: hidden; } .row1, .row2, .row3 { padding: 10px; margin-bottom: -1000px; padding-bottom: 1000px; } .row1{ width: 120px; background: #F2F2F2;

在asp.net的后置代码中写入javascript语句,防止提示框背景变白

一般,当我们在网页中弹出类似于msgbox的提示信息时,背景页面都是白色的,这样看起来很不爽例如:怎么解决这个问题?可以在asp.net的后置代码中写入javascript语句,防止背景变白 if (code!=rightCode ){Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language="javascript" defer>al

Javascript实例代码:点击设置网页背景

文章简介:根据选项设置背景颜色. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv=

javascript 触发表格背景变色

javascript javascript 触发表格背景变色 1 1 2 2 3 3 代码-----------<table width="400" border="1" cellspacing="1" cellpadding="1"><tr ><td>1</td><td>1</td></tr><tr ><td>2<