js权威指南之web浏览器中的javascript

1. Web浏览器环境
HTML定义内容,CSS提供表现形式,JS为内容及表现形式增加行为。
JS的作用就是增强用户的浏览体验,使得信息的获取和传输更加容易,用户体验不应依赖于JS,但是JS可以作为这种体验的工具。
无干扰的JS的客户端编程模式要求保持JS代码和HTML标记的分离,降低优雅性,但不能降低一个HTML页面的可访问性。
Window对象为全局执行环境,是位于作用域链头部的全局对象,可由window和self属性来引用,其frames[]数组包含了多帧文档中各帧的Window对象的引用。document属性引用与窗口关联在一起的Document对象。

2. 在HTML中嵌入脚本
   script标记:
客户端js代码放置在标记<script>和</script>之间,可以使用document.write()函数根据脚本的位置把HTML文本输出到文档,HTML解析器须在解析的过程中解释js脚本,而不会在文档解析之后,将文档中所有脚本合并在一个大的脚本运行,因为文档中任何脚本都可能改变文档。
   默认脚本语言:可以使用HTML的<meta>标记指定默认脚本语言
<meta http-equiv="Content-Script-Type" content="text/javascript">
可在<script>标记中用type属性覆盖掉默认脚本语言 <script type="text/javascript">
   defer属性:defer属性提示浏览器继续解析HTML文档并延迟脚本的执行,直到遇到一个无法延迟的脚本。但IE总是将延迟的脚本延迟到文档结束而不是只延迟到遇到下一个非延迟的脚本。
   <noscript>标记:用于保存只有当浏览器中js关闭时才要提交的内容
   </script>标记:使用document.write()方法和innerHTML属性输出其他脚本时,注意"</script>"字符串,因HTML解析器会将其作为脚本的结束标记,故可以写成"</"+"script>",或者"<\/script>"

3. HTML中的事件句柄
   onclick:所有类似按钮的表单元素和标记<a>及<area>都支持。若onclick处理程序返回false则不执行任何与标记相关的默认动作。
   onmousedown,onmouseup: 大部分元素支持
   onmouseover,onmouseout: 鼠标悬停或移出时触发
   onchange: <input><select><textarea>支持,用户改变元素显示值或移出元素焦点时触发
   onload: body标记的句柄

4.URL中的javascript
   javascript协议:"javascript:"协议限定符+URL
   URL由javascript代码串组成,它被当作单独的一行代码对待,其中的语句由分号分隔。
   由此URL指定的“资源”为javascript代码的返回值,若返回值不为undefined,则浏览器载入这样的javascript URL时,使用最后一个语句或表达式的值转换为一个字符串,作为新载入的文档的内容显示,即若一个锚元素的href属性为"javascript:window.open('about:blank')",则点击它后当前窗口会打开一个新的窗口,并且当前窗口会载入一个新的文档,这个文档的内容为javascriptURL中最后一个语句返回值的字符串形式。例如 javascript:window.open("about:blank")会使当前窗口显示为(如果是IE) [object] .若返回值为undefined,则“资源”为空,当前窗口内容保持不变。
   javascriptURL可用在<a>的href属性中,<form>的action属性中。
   在javascriptURL最后加上一句void 0;可使返回值变为undefined 。
   chrome会直接忽略在地址栏中输入的javascriptURL,火狐和IE不会,javascriptURL也可以传递给一个期待URL参数的方法,如window.open();
   
5.javascript程序执行
 带defer的脚本会在文档完全解析,所有非延迟脚本执行后,onload句柄触发前执行
由于onload句柄在文档完全解析之后调用,它们必须不调用document.write(),任何这样的调用都会重新打开一个新文档并覆盖掉当前文档
onunload事件句柄:
用户导航离开一个web页面时,浏览器会触发onunload事件句柄
客户端线程模型:
客户端js是单线程的,于是可将计算分解为离散的子任务,可以使用setTimeout和setInterval在后台运行子任务,同时更新一个进度指示器来向用户显示反馈。

6 客户端兼容性
只留下了对IE条件注释的部分
IE中的条件注释:
<!--[if IE 6]>
This content is actually inside an HTML comment.
It will only be displayed in IE 6.
<![endif]-->
<!--[if lte IE 7]>
This content will only be displayed by IE 5, 6 and 7 and earlier.
lte stands for "less than or equal". You can also use "lt", "gt" and "gte".
<![endif]-->
<!--[if !IE]> <-->
This is normal HTML content, but IE will not display it
because of the comment above and the comment below.
<!--> <![endif]-->
This is normal content, displayed by all browsers.
IE中的js条件注释以结束(cc_on中的cc表示有条件编译)。
JScript是Microsoft的javascript解释器的名字,而@_jscript变量在IE中总是为true,通过条件注释和常规js注释的合理交叉组合,可以设置在IE中运行一段代码而在所有其他浏览器中运行另一段不同的代码:
// This code is no longer inside a JavaScript comment, but is still
// inside the IE conditional comment. This means that all browsers
// except IE will run this code.
alert('You are not using Internet Explorer');
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值