[转发+推荐]深入图解字符集与字符集编码

深入图解字符集与字符集编码(一)——charset vs encoding

http://my.oschina.net/goldenshaw/blog/304493

深入图解字符集与字符集编码(二)——字符集及其编号

http://my.oschina.net/goldenshaw/blog/305805

深入图解字符集与字符集编码(三)——定长与变长

http://my.oschina.net/goldenshaw/blog/307708

深入图解字符集与字符集编码(四)

http://my.oschina.net/goldenshaw/blog/310331

深入图解字符集与字符集编码(五)——Unicode的代码单元

http://my.oschina.net/goldenshaw/blog/311848

js分享到微博的简单URL

var title='分享标题'

var url=location.href;

var site = "示例网站";

var picUrls=['图片URL1', '图片URL2', '图片URL3'];



var sina_weibo = "http://v.t.sina.com.cn/share/share.php?title=" + encodeURIComponent(title) + "&url=" + url + "&pic=" + picUrls.join("||") + "&source=bookmark&appkey=&ralateUid=";


var tentcent_weibo = "http://share.v.t.qq.com/index.php?c=share&a=index&title=" + encodeURIComponent(title) + "&url=" + url + "&pic=" + picUrls.join("|") + "&site=" + site + "&appkey=";

var qzone = "http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?title=" + encodeURIComponent(title) + "&url=" + url + "&pics=" + picUrls.join("|") + "&summary=";

Google Chrome Stable for Linux最新版本下载

注意下载地址长期不变,但下到的始终是当前最新的Stable版。

DEB包 RPM包
~~32位~~ ~~https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb~~ ~~https://dl.google.com/linux/direct/google-chrome-stable_current_i386.rpm~~
64位 https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

浏览器和元素的尺寸、位置有关的属性和方法

学习笔记,写的不是很全,兼容性尚未测试。

属性 作用 兼容性
screen.width
screen.heihgt
   
   
screen.availWidth
screen.availHeight
   
   
window.innerWidth
window.innerHeight
浏览器视口尺寸,去除浏览器菜单栏、工具栏、状态栏,但包含滚动条的尺寸,  
window.outerWidth
window.outerHeight
 浏览器窗口外边框尺寸  
 浏览器窗口外边框尺寸  
window.screenX
window.screenY
window.screenTop
window.screenLeft
窗口在屏幕中的位置  
window.scrollX
window.pageXOffset
window.scrollY
window.pageYOffset
文档滚动位置  
   
Element.getBoundingClientRect() 返回元素对应border-box方框到视口的偏移坐标,  
Element.getClientRects() 返回类数组,对以inline方式显示的元素来说,每行行框都是一个方框,返回所有这些方框到视口的偏移坐标,对显示为块级的元素来说,效果同getBoundingClientRect()  
document.elementFromPoint()  指定相对于视口的坐标,返回该坐标处的元素。如果有定位元素,返回z-index最大(最上层)的,否则返回该处在文档树中最深的节点元素。  
Element.offsetWidth
Element.offsetHeight
Element.offsetLeft
Element.offsetTop
元素滚动可见部分内容border-box的尺寸。offsetLeft, offsetTop返回到offsetParent的距离  
Element.offsetParent 偏移的上级参照元素  
Element.clientWidth
Element.clientHeight
Element.clientLeft
Element.clientTop
元素滚动可见部分内容padding-box(不含滚动条)的尺寸,对显示为inline的元素来说,始终返回0。clientLeft,
clientTop返回padding-box外边缘到border-box外边缘的距离,通常来说就是边框宽度。但对于从右到左书写的语言来说,垂直滚动条出现在padding-box左侧,所以client-left还包括了滚动条的宽度。
 
Element.scrollWidth
Element.scrollHeight
Element.scrollLeft
Element.scrollTop
padding-box滚动整体的尺寸。在没有内容溢出时,scrollWidth, scrollHeight和clientWidth, clientHeight是相等的。 scrollLeft, scrollTop为视口相对元素左上角的滚动偏移量,且为可写属性。  
window.scroll()
window.scrollTo()
   
window.scrollBy()    
Element.scrollIntoView()    

JavaScript客户端document对象不常用属性

document.readyState

文档载入状态,按顺序分别为

  • loading,正在解析文档
  • interactive,文档解析完成,但文档的其它资源(如图片)尚未完全载入,此时document也会触发DOMContentLoaded事件
  • complete,文档资源完全载入完毕,此时也会触发window的load事件

document.compatMode

页面渲染模式,有标准模式和怪异模式,未声明doctype的文档将被以怪异模式渲染,以保持向后兼容,取值有

  • CSS1Compat,正在使用标准模式
  • BackCompat或该属性未定义,表示正在使用怪异模式。

document.domain

指定文档的同源策略,以便不同子域的脚本可以访问其他子域的资源。

document.URL

文档的初始URL,不同于location.href,为只读属性。

document.lastModified

文档的最后修改时间。

document.referrer

文档的来源URL,从哪个地址跳转到当前文档。

document.title

文档的标题。

JavaScript中有关对象属性的一些操作

创建对象

var obj={};
var obj=new Object();
var obj=Object.create(Object.prototype);        //Object.create() 为ES5新增
var obj=Object.create(Object.prototype,<属性描述符列表>);  
<属性描述符列表>格式:{
    prop1: <属性描述符1>,
    prop2: <属性描述符2>,
    ...
}
属性描述符可以是:{
    value:<value>,
    writable:[true|false],
    enumerable:[true|false],
    configurable:[true|false]
} 或 {
    get: function() {},
    set: function() {},
    enumerable:[true|false],
    configurable:[true|false]
}

删除属性

delete obj.property;
delete obj['property'];

检测属性

'property' in obj;      //检测属性是否存在
obj.hasOwnProperty('property');     //检测该属性是否为自有属性(非继承而来)
obj.propertyIsEnumerable('property');   //ES5新增,检测属性是否为自有属性,且可枚举
Object.getOwnPropertyDescriptor(obj, 'property')    //ES5新增,获取对象obj的属性property的属性描述符

设置属性

obj.property=value;
obj['property']=value;
obj={
    prop1: value1,
    prop2: value2,

    //getter和setter为ES5新增
    get prop3() {
        return somevalue;
    },
    set prop3(value) {
        //process and save value
    }
};

配置属性的特性,ES5新增

Object.defineProperty(obj,'property',<属性描述符>);
obj的属性会被定义,同时返回obj
例如:
Object.defineProperty(obj,'property',{value:'value', writable:true, enumerable:true, configurable:true});
Object.defineProperty(obj,'property',{get:function(){}, set:function(){}, enumerable:true, configurable:true});

批量配置属性特性

Object.defineProperties(obj,<属性描述符列表>);
//obj的属性会被设置,同时返回obj

枚举属性

for(property in obj) { console.log(property); }     //只能列出可枚举属性
Object.keys(obj);       //ES5新增,返回属性名数组,只能列出自有属性,只能列出可枚举属性
Object.getOwnPropertyNames(obj);    //ES5新增,返回属性名数组,只能列出自有属性,列出的属性包括不可枚举属性

修改对象可扩展性,ES5新增

Object.preventExtensions(obj);  //阻止对象扩展,不能添加新属性
Object.isExtensible(obj);       //检测对象是否可扩展

Object.seal(obj);   //封闭对象,除了不能扩展,还不能配置属性特性,但可写属性依然可以赋值
Object.isSealed(obj);   //检测对象是否封闭的

Object.freeze(obj); //冻结对象,除了封闭对象,所有属性都配置为只读
Object.isFrozen(obj);   //检测对象是否冻结的

《JavaScript权威指南》第6版中文版 勘误记录(只记录中文版引入的新bug)

第3章

3.1.5节“日期和时间”的示例代码最后一行为 later.getUTCHours(),遗漏英文原版下一页后5行代码。

3.2.2节“转义字符”表3-1主体内容第一行\o应为\0 (数字0)。

3.8.2节“显式类型转换”本人认为译注6是多余的。

3.10节“变量作用域”第二个代码示例
myscope = “local”; //这里显式地声明了一个新的全局变量
应为
myscope = “local”; //这里隐式地声明了一个新的全局变量

3.10节“变量作用域”第三个代码示例缩进格式丢失。

3.10节“变量作用域”第三个代码示例最后一行
checkscope() // => “嵌套的作用域
注释部分应保持英文不翻译,应为
checkscope() // => “nested scope

3.10.2节“作为属性的变量”第一段
是全局对象的正常的可配值属性
应为
是全局对象的正常的可配置属性

第4章

第4章引言
程序中的常量是最简单的一类表达式。
应为
程序中的直接量是最简单的一类表达式。

4.5节“调用表达式”
包括当形参表达式的个数和函数定义中的实参的个数不匹配……
应为
包括当实参表达式的个数和函数定义中的形参的个数不匹配……

4.5节“调用表达式”
作为属性访问主题的对象和数组
应为
作为属性访问主体的对象和数组

4.8.2节“一元算术运算符”“递减(–)”
当递减运算符在操作符的右侧时,运算符和操作数之间不能有换行符。
应为
当递减运算符在操作数的右侧时,运算符和操作数之间不能有换行符。

4.8.3节“位运算符”“按位异或(^)”
位运算符“|
应为
位运算符“^

4.9.1节“相等和不相等运算符”严格相等(===)比较规则第2条
如果两个值都是null或者都是undefined,则它们不相等
应为
如果两个值都是null或者都是undefined,则它们相等

4.9.2节“比较运算符”
String.localCompare()方法
应为
String.localeCompare()方法

第6章

6.2.2节“继承”第三段
如果之前o继承自属性x
应为
如果之前o继承了属性x
下同,所有“继承自”都应改为“继承了”。

6.4节“检测属性”末节示例代码
//如果x是undefined、null、false、” “、0或NaN,则它保持不变
字符串中应没有空格:
//如果x是undefined、null、false、””、0或NaN,则它保持不变

6.8.2节“类属性”
本人认为译注7是多余的而且造成误导,实际原文的说法是对的。

6.8.3节“可扩展性”
Object.esExtensible()
应为
Object.isExtensible()

6.8.3节“可扩展性”第四段
Object.seal() …不过它已有的可写属性依然可以设置
建议翻译为
不过它已有的可写属性依然可以赋值

第7章

7.9.5节“reduce()和reduceRight()”
到目前位置
应为
到目前为止

7.9.6节“indexOf和lastIndexOf”
对于splice()方法
应为
和splice()方法一样

第8章

8.2.3节
Max.max()
应为
Math.max()

第9章

9.2节“类和构造函数”
var r = range(1, 3);
应为
var r = new Range(1,3);

9.4节“类的扩充” 第二段示例代码中的正则表达式

/function\s*([^()*]\(/

应为

/function\s*([^(]*)\(/

9.7节“子类”
覆盖(override)和重载(overload)在面向对象编程中是两个不同的概念,9.7节将所有的override都错误地翻译成了“重载”,应为“覆盖”。

9.7.2节“构造函数和方法链”
但它需要完全重新实现一个add()方法
应为
但它不需要完全重新实现一个add()方法

9.9.2节“作为私有命名空间的函数”
译注16:
“它们”是指构造函数创建的新实例
译者没有理解代码本意,“它们”是指需要导出的公用API

第10章

10.1.1节“直接量字符”表10-1
*o**
应为
*
0**

10.1.2节“字符类”表10-2

\w  任何ASCII字符组成的单词,等价于[a-zA-Z0-9]
\W  任何不是ASCII字符组成的单词,等价于[^a-zA-Z0-9]

是字符而非单词,且遗漏原文中等价类的下划线,应为

\w  任何ASCII字符,等价于 [a-zA-Z0-9_]
\W  任何非ASCII字符,等价于 [^a-zA-Z0-9_]

10.1.3节”重复“例子
/\w{3}\d?/ // 精确匹配三个单词和一个可选的数字
建议翻译为
/\w{3}\d?/ // 精确匹配三个普通字符和一个可选的数字

10.1.5节“指定匹配位置”第四段

/Java(?! Script)([A-Z]\w*)/  

根据原文,断言中的文本并无开头的空格,应为

/Java(?!Script)([A-Z]\w*)/

10.1.5节“指定匹配位置”第四段
它可以匹配“JavaScript”,但不能匹配“JavaScripter”。
根据原文,应为
它可以匹配“JavaScrip”,但不能匹配“JavaScript”或“JavaScripter”。

10.3.2节“RegExp方法”最后一段
要么在每个字符串中找出所有的匹配以便将lastIndex自动重置为零,要么显式将lastIndex手动设置为0(当最后一次检索失败时需要手动设置lastIndex
这里翻译不但改动了原文语句的顺序,而且括号里的补充说明与原文意思刚好相反,应为:
要么在每个字符串中找出所有的匹配以便将lastIndex自动重置为零(发生在最后一次搜索失败时),要么显式将lastIndex手动设置为0

第13章

13.2.4节“HTML中的事件处理程序”最后一段
相互之间用逗号分隔
应为
相互之间用分号分隔

第14章

14.8.1节“打开和关闭窗口”
w.opener !== null; // true,对于由w创建的任意窗口
根据原文应为
w.opener !== null; // true,对于由open()创建的任意窗口w

第15章

15.3.1节“作为节点树的文档”
previoursSibling
应为
previousSibling

15.8.4节“滚动”
Window对象的ScrollTop()方法
应为
Window对象的ScrollTo()方法

15.10.4节“可编辑的内容”
function bold() { document.execCommand(“bold”, false, url); }
根据原文应为
function bold() { document.execCommand(“bold”, false, null); }

15.10.4节“可编辑的内容”
document.queryCommandSupport()
应为
document.queryCommandSupported()

第16章

16.2.2节“查询、插入与删除样式表规则”
selectText
应为
selectorText

第17章

17.1.2节“DOM事件”
3级DOM事件规范标准化了不冒泡的focusin和focusout事件来取代冒泡的focus和blur事件
应为
3级DOM事件规范标准化了冒泡的focusin和focusout事件来取代不冒泡的focus和blur事件

17.1.2节“DOM事件”
标准化了冒泡的mouseenter和mouseleave事件来取代不冒泡的mouseover和mouseout事件
应为
标准化了不冒泡的mouseenter和mouseleave事件来取代冒泡的mouseover和mouseout事件

17.2.3节“addEventListener()” 示例代码

<button id="my button">

应为

<button id="mybutton">

第18章

18.1.1节“指定请求”插文“顺序问题”
setRequestHeader()方法的调用必须在调用open()之前但在调用send()之后
应为
setRequestHeader()方法的调用必须在调用open()之后但在调用send()之前

第19章

19.5.3节“动画的取消、延迟和队列”
可以使用queque()方法给队列添加一个新的函数
应为
可以使用queue()方法给队列添加一个新的函数

19.6.1节插文“jQuery的Ajax状态码”
“timout”
应为
“timeout”

第20章

20章导言
本书第8章介绍过现在主流浏览器都支持一个文件对象
应为
本书第18章介绍过现在主流浏览器都支持一个文件对象

20.4.2节“缓存的更新” 例20-4代码progress事件处理程序
“process”事件
应为
“progress”事件(共2处)

第22章

22.4.1节“Worker对象”
Worker的postMessage()方法是没有参数的
应为
Worker的postMessage()方法是没有origin这个参数的

22.4.2节“Worker作用域“
同时,WorkerGlobalSpace会添加一个相同基本API的异步版本
应为
同时,WorkerGlobalSpace会添加一个相同基本API的同步版本

22.5节“类型化数组和ArrayBuffer”示例代码
last.bytelength
应为
last3.byteLength

DateView
应为
DataView(共2次)

JavaScript核心参考

String.trim() 缺少 EcmaScript 5 标注

客户端JavaScript参考

DataTransfer类, dropEffect属性
它的值必须为“none”、“copy”、“move”、“copy”、或link之一
应为
它的值必须为“none”、“copy”、“move”或link之一

Window.atob()及Window.btoa()
“base64″是技术术语,应保持原样不翻译。