JavaScript高级编程(一)
书中第2章,在HTML中使用JavaScript摘要总结
2.1 <script>元素
<script>中的5个属性:
charset:可选。表示通过src属性指定的代码的字符集。多数浏览器会忽略它的值,很少人使用。
defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。IE和Firefox3.1是目前唯一支持defer属性的主流浏览器。其他浏览器则会忽略,不延迟脚本的执行。
language:已废弃。原来用于表示编写代码使用的脚本语言(如JavaScript、JavaScript1.2或VBScript)。
src:可选。表示包含要执行代码的外部文件。
type:必需。表示编写代码使用的脚本语言的内容类型(也称为MIME类型)。通常为text/javascript。
包含在<script>元素内的JavaScript代码将被从上至下依次解释。在解释器对<script>元素内部的所有代码求值完成以前,页面中的其余内容都不会被浏览器加载或显示。
在使用<script>嵌入JavaScript代码时,任何地方不能出现"<script>"字符串。
<script
type="text/javascript">
function sayScript(){
alert("</script>"); //此处会报错
}
</script>
可将"</script>"分开写,避免错误。
<script
type="text/javascript">
function
sayScript(){
alert("</scr" + "ipt>");
}
</script>
src属性可以指向当前HTML页面所在域之外的某个域中的URL,例如
<script
type="text/javascript" src="http://www.somewhere.com/afile.js"></script>
2.1.1 标签的位置
按照惯例,所有的<script>元素都应该放在页面的<head>元素中,可是,这将意味着必须等到全部JavaScript代码都被下载、解析和执行完成以后,才能呈现页面内容(浏览器在遇到<body>标签时才开始呈现内容)。对于需要很多JavaScript代码的页面来说,会导致呈现页面时出现的延迟现象。为了避免这种现象发生,可以把全部JavaScript引用发在页面的内容后面或增加defer属性,如下例所示:
<html>
<head>
<title>Example HTML Page</title>
</head>
<body>
<!-- 这里放内容 -->
<script type="text/javascript"
src="example1.js"></script>
<script
type="text/javascript" src="example2.js"></script>
</body>
</html>
2.1.3 在XHTML中的用法
某些JavaScript代码在HTML中是有效的,但在XHTML中则是无效的:
<script
type="text/javascript">
function compare(a, b) {
if (a < b) {
alert("A is less
than B");
} else if (a > b) {
alert("A is greater
than B");
} else {
alert(" A is equal to
B");
}
}
</script>
代码中的比较语句a < b
中的小于号(<)在XHTML中将被当作开始一个新标签来解析。但是作为标签来讲,小于号后面不能跟空格,因此就会导致语法错误。
避免类似语法错误的方法有两个。一是用相应的HTML实体(<)替换小于号(<),替换后的代码如下:
<script
type="text/javascript">
function compare(a,
b) {
if (a
<
b) {
alert("A is
less than B");
}
else if (a > b) {
alert("A is greater than
B");
} else
{
alert(" A is equal to
B");
}
}
</script>
这样虽然可以运行,但不便于理解。因此可用第二种方法,用一个CData片段来包含JavaScript代码。在XHTML(XML)中,CData片段是文档中的一个特殊区域,这个区域中可以包含不需要解析的任意格式的文本内容。
<script
type="text/javascript">
//某些浏览器不兼容XHTML,因而不支持CData片段,可以使用JavaScript注释将CData标记注释掉
//<![CDATA[
function
compare(a, b) {
if (a < b)
{
alert("A is less than
B");
} else if (a > b) {
alert("A is greater than B");
} else
{
alert(" A is equal to
B");
}
}
//]]>
</script>
2.3 <noscript>元素
这个元素可以包含能够出现在文档<body>中的任何HTML元素——<script>元素除外,包含在<nosript>元素中的内容只有在下列情况下才会显示出来:
1.浏览器不支持脚本
2.浏览器支持脚本,但脚本被禁用。
<html>
<head>
<title>Example HTML
Page</title>
<script type="text/javascript"
src="example1.js"></script>
<script
type="text/javascript"
src="example2.js"></script>
</head>
<body>
<noscript>
<p>本页面需要浏览器支持(启用)JavaScript</p>
</noscript>
</body>
</html>
以上所有内容均摘自图书《JavaScript 高级程序设计(第2版)》[美] Nicholas
C.Zakas 著 李松峰 曹力 译
JavaScript高级编程(一)的更多相关文章
- javascript高级编程笔记01(基本概念)
1.在html中使用JavaScript 1. <script> 元素 <script>定义了下列6个属性: async:可选,异步下载外部脚本文件. charset:可选, ...
- JavaScript高级编程———JSON
JavaScript高级编程———JSON < script > /*JSON的语法可以表达一下三种类型的值 简单值:使用与javas相同的语法,可以在JSON中表达字符串.数值.布尔值和 ...
- JavaScript高级编程———基本包装类型String和单体内置对象Math
JavaScript高级编程———基本包装类型和单体内置对象 <script> var stringObject = new String("hello world") ...
- JavaScript高级编程——Date类型
JavaScript高级编程——Date类型 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" ...
- JavaScript高级编程——Array数组迭代(every()、filter()、foreach()、map()、some(),归并(reduce() 和reduceRight() ))
JavaScript高级编程——Array数组迭代(every().filter().foreach().map().some(),归并(reduce() 和reduceRight() )) < ...
- JavaScript高级编程——引用类型、Array数组使用、栈方法
JavaScript高级编程——引用类型.Array数组使用.栈方法 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999 ...
- JavaScript高级编程———数据存储(cookie、WebStorage)
JavaScript高级编程———数据存储(cookie.WebStorage) <script> /*Cookie 读写删 CookieUtil.get()方法根据cookie的名称获取 ...
- JavaScript高级编程 (1) - javscript是什么
<重温javascript>这是一系列 javascript 的学习笔记,部分内容摘自书本或者网络,我这里只是基于自己的理解进行了梳理整理. 一个完整的 javscript 实现是由以下3 ...
- JavaScript高级编程II
原文地址: http://www.onlamp.com/pub/a/onlamp/2007/08/23/advanced-javascript-ii.html?page=1 在前面的文章中, ...
随机推荐
- vs2010 使用IIS EXPRESS出错.
出现的问题: 解决方法: 左键单击Web项目, 查看属性选项卡, 将 托管管道模式改成Classic就可以了.
- jboss 占用cpu 100%
通过Java thread dump分析找到耗费CPU最高的源代码 分类: 9. Java2010-04-11 23:06 9272人阅读 评论(4) 收藏 举报 threadjavaeclipse插 ...
- Codeforces449A Jzzhu and Chocolate && 449B Jzzhu and Cities
CF挂0了,简直碉堡了.两道题都是正确的思路但是写残了.写个解题报告记录一下心路历程. A题问的是 一个n*m的方块的矩形上切k刀,最小的那一块最大可以是多少.不难发现如果纵向切k1刀,横向切k2刀, ...
- HDU 3642 Get The Treasury (线段树扫描线,求体积并)
参考链接 : http://blog.csdn.net/zxy_snow/article/details/6870127 题意:给你n个立方体,求覆盖三次以上(包括三次)的区域的体积 思路:先将z坐标 ...
- web工程导入MyEclipse 就变成Java工程 ———— 解决方案
Web 工程 导入到 MyEclipse 中后就变成 Java工程了 折腾大大半天,最后才发现是 .settings 里面文件的配置问题.. .settings 文件夹里面的 org.eclipse. ...
- springmvc的mvc:view-controller标签
1.重定向 <mvc:view-controller path="/" view-name="redirect:/admin/index"/> 即如 ...
- Quartz 2D Programming Guide
Quartz 2D Programming Guide 官方文档: Quartz 2D Programming Guide 译文: Quartz 2D编程指南(1) - 概览 Quartz 2D编程 ...
- 二分法查找(大于,大于等于x的最小,小于,小于等于x的最大值)
#include<stdio.h> #include<algorithm> using namespace std; //小于x的最大 //大于x的最小 //x的第一个 //x ...
- Fuzzy test
参考:http://baike.baidu.com/view/3679678.htm http://en.wikipedia.org/wiki/Fuzz_testing 就是模糊测试,在网上看到也叫f ...
- tomcat console
1.大家都知道,在Tomcat5及其以后的版本中,当启动tomcat之后,是看不到控制台中的manager应用的.Manager的应用还是很有好处的,可以直接在控制台上(类似于weblogic上的co ...