2018-03-29:第二章——在HTML中使用JavaScript

2.1    <script>元素

        向HTML页面中插入JavaScript的主要方法就是使用<script>元素。HTML4.01为<script>定义了以下6个属性:

                (1)async:可选。表示应当立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。

                (2)charset:可选。表示通过src属性指定的代码字符集,大多数浏览器会忽略它的值,导致用的少。

                (3)defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部文件脚本有效。IE7及更早版本对嵌入脚本也支持这个属性。

                (4)anguage:已废弃。

                (5)src:可选。表示包含要执行代码的外部文件。

                (6)type:可选。可看成language的替代属性;表示编写代码使用的脚本语言的内容类型(MIME)。

        使用<script>元素的方式有两种:直接在页面中嵌入JavaScript代码、包含外部JavaScript文件。

        使用时不要在代码中的任何地方出现“</script>”字符串,按照解析嵌入式代码的规则,当浏览器遇到字符串“</script>”时,就会认为结束标签,可以通过转义字符“\”解决该问题。

        使用src属性,通过<script>元素包含外部JavaScript文件时,如果在XHTML文档中可以省略结束标签</script>,但是在HTML文档中不可以使用这种不符合HTML规范的语法,并且使用后也得不到某些IE浏览器的正确解析;带有src属性的<script>元素不应该在<script></script>之间包含额外的js代码,如果包含,则会下载后被忽略;另外src属性还可以包含来自外部域的js文件。

        按照惯例,外部的JavaScript文件带有.js拓展名。这个拓展名不是必需的,因为浏览器不会检查包含JavaScript的文件拓展名。这样一来,使用PHP、jsp或其他的服务器端语言动态生成JavaScript代码也就成为了可能。但是服务端通常还是需要看拓展名决定相应应用哪种MIME类型。如果不适用.js拓展名,请确保服务器能正常返回正确的MIME类型。

2.1.1    标签的位置

        因为js执行顺序从上到下从左到右,故将js文件放到<body>后面,浏览器打开页面显示空白页时间缩短,使用户感觉打开页面速度加快。

2.1.2    延迟脚本

        <script type="text/javascript" defer="defer" src="xxx.js"></script>

        含有defer的script元素中包含的脚本将延迟到</html>标签执行后再执行,并且按照HTML5的规范要求会按照脚本的先后顺序执行,而且这些脚本会先于DOMContentLoaded,但在现实中不一定理想哦,因此最好只包含一个延迟脚本;

        H5中明确规定,defer属性只是用于外部脚本文件。

2.1.3    异步脚本

        <script type="text/javascript" async="async" src="xxx.js"></script>

        含有asnyc的script元素中包含的脚本用refer类似只适用于外部脚本,并且告诉浏览器立即下载文件,不会使页面等待js脚本下载和执行,因此建议异步脚本不要再家在期间修改DOM;

        不同的是标记为async脚本并不能保证按照他们制定的先后顺序执行,因此一定要确定引入的多个js脚本不会互相依赖;

        异步脚本一定会在页面的load事件前执行,但可能会在DOMContentLoaded事件触发之前或者之后执行。

2.1.4    在XHTML中的用法

        在将页面的MIME类型指定为“application/xtml+xml”的情况下会触发XHTML模式

        XHTML的规则比HTML的规则严格,会有代码被解析成标签的可能,为了避免有两种方法:

        1.用相应的HTML实体替换代码中可能被解析的代码,但会导致代码可读性降低;

        2.使用CData片段来包含js代码,如果浏览器不兼容XHTML因而不支持CData片段,可使用js的注释将CData标记注释掉,便可以了。

          //  <![CData[

                …………

          //  ]]>

2.2    嵌入代码与外部文件

Nicholas推荐使用外部文件包含JavaScript代码,以下优点:

        可维护性:可以使代码宏观上更清晰,开发人员更容易维护;

        可缓存:浏览器可以根据具体的设置缓存所有外部的JavaScript文件,使用相同的文件只需要下载一次;

        适应未来:无需使用XHTML或注释hack。

2.3    文档模式

2.4    <noscript>元素

        早期用来处理浏览器不支持JavaScript是如何让页面平稳退化的方法。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容

  • 本章内容 使用 元素嵌入脚本与外部脚本文档模式对JS的影响考虑禁用JS的场景 (1)script元素 向HTML页...
    我拥抱着我的未来阅读 406评论 0 1
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,088评论 0 1
  • 关于如何在html中引用使用js真的是特别简单的事情,因为大家都用一些高能的前端编辑器,比如webstorm,At...
    peppermint_egg阅读 1,011评论 0 0
  • 20个月 有自己的坚持,不会二选一,喜欢对着干。非常不愿意穿衣裤子,我:穿上裤子出去玩呢?还是光着屁股出去玩?宸:...
    惜萌阅读 119评论 0 0
  • 夏日,一直是我最喜欢的季节。西瓜的清甜,可乐的气泡,沙滩的金黄与海水的深蓝,都是夏日必不可少的美妙元素啊。 真想到...
    63c31891e5b6阅读 708评论 0 2