这篇文章主要介绍关于
使用外链资源时加载次序没有那么直观,但依然是成立的:
如果你混合使用外链和内联的 JavaScript,这个规则同样适用。
这意味着如果你的网站有很慢的脚本在页面较前部分被加载,你的网页加载就会被显著拖慢。这也意味着后加载的脚本可以依赖先加载的脚本。
页面元素在它之前的所有脚本都加载完毕之前是不会执行渲染的。这意味着你可以你可以在页面加载之前在网页上做各种疯狂的事情,当然前提是你不在意因此而造成的性能问题。
然而这个规则不适用于你在网页加载完成之后通过 document.appendChild
之类的方法添加
你可以想象 HTML 解析器一个标记一个标记地访问文档,当它解析到
这段代码实际执行结果由你自己决定,例如:
定义 runEmeraldCode
函数留给你们作为练习。
如果你有特别的需要,你也可以重写页面上
我还没有看到有人用了它,然而如果你知道有哪个网站用了,可以在下面评论。
crossorigin
!虽然还没有完全被标准化,但是一些浏览器支持 crossorigin
属性。基本的想法是,浏览器会限制对非同源资源的使用(同源资源是指相同的协议、hostname 以及端口,例如: `http://google.com:80)。
这是为了防止你,例如,向你的竞争对手网站发请求,注销你的用户在对方网站的账号(这不好!)。这个问题牵扯到
这段代码在 Chrome 或者 Firefox 下不能实际工作,但是它依然能够在 IE 下工作。
NOSCRIPT
如同你父母一样,很难相信 JavaScript 也曾经年少过。曾经有过这样一段时间你不能确定是否一个浏览器支持 JavaScript。更糟的是,你甚至不能确定那个浏览器能识别 script
标记。而如果一个浏览器不能识别标记,它应该会将它渲染成一个 inline 元素,意味着你所有 JavaScript 代码会被作为文本渲染在页面上!
幸运地是,规范已经能足够有效地避免这个情况发生,你只需要将你的代码包在 HTML 注释里,那些不支持脚本的浏览器会把下面的文本当做注释:
当然,像很多事情一样,XHTML将这变得更糟。XML用特殊的方法来转义可能包含结束标记的内容,这是 CDATA
的来历:
像上面这样写,你的代码可以是一个规范的 XHTML。它对实际功能没有什么影响,但是它对你作为一个 Web 开发者的荣誉也许很重要(现在这个时代,谁还用 XHTML 啊——译者注)。
浏览器也包含一个有用的方法来让你把那些不支持 JavaScript 人赶走,通过 noscript
标记。 标记里的内容只有浏览器不支持脚本的时候才会被渲染出来:
如果你有敏锐的观察力,你会意识到 noscript
不接受 type
参数,这使得那些使用别的 type
类型的脚本的页面上如果出现 noscript
会显得有点歧义。noscript
实际行为在各个浏览器下有所不同。
为什么会是这样的原因不是很确定,但是它解决了一个小问题:“是否有一个办法让一个