<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>南芝 - 我才12岁（孤独、快乐的生活在自己的世界里） &#187; JavaScript</title>
	<atom:link href="http://www.12sui.cn/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.12sui.cn</link>
	<description>南芝的前端技术学习经验</description>
	<lastBuildDate>Thu, 29 Jul 2010 16:01:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>前端 tips（2010.7）</title>
		<link>http://www.12sui.cn/css/tips-2010-7/</link>
		<comments>http://www.12sui.cn/css/tips-2010-7/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 16:01:34 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=1051</guid>
		<description><![CDATA[本月前端 Tips: 7.1 - 7.2 84.【CSS】绝对定位元素盖住链接或添加某事件handle的元素后，那么该链接的默认行为（页面跳转）或元素事件将不会被触发。Firefox3.6+/Safari4+/Chrome支持一个称为pointer-events的css属性，使用该属性可以决定是否能穿透绝对定位元素去触发下面元素的某些行为。（https://developer.mozilla.org/en/CSS/pointer-events） 83.【JS】Number,Boolean,String,Undefined这几种基本类型混合比较时，会将其转换成数字再进行比较；基本类型与复合对象进行比较时，会先将复合对象转换成基本类型（依次调用valueOf与toString方法）再进行比较；undefined被当成基本类型，undefined转换成数字是NaN，因此undefined与除null之外的其它类型值进行比较时始终返回false(注意NaN==NaN返回false)；null被当成复合对象，由于null没有valueOf与toString方法，因此和除了undefined之外的其它类型值进行比较时始终返回false。（http://www.javaeye.com/topic/696802） 7.5 - 7.9 84.【CSS】IE6及IE7/8怪异模式下，绝度定位元素当指定了left及right，而width或者height为默认值auto，此时浏览器无法正确地计算出width或者height的值，应该尽量避免此种情况设定固定的宽高，如不能避免，可以通过js获取宽高进行设置。（Google） 85.【JS】在插入文档后，IE下input.type属性为只读，如果需要修改可以通过新建另一个input控制显隐来达到目的。 86.【HTML】media type(媒体类型)是css 2中的一个非常有用的属性，通过media type我们可以对不同的设备指定特定的样式，从而实现更丰富的界面。media query(媒体查询)是对media type的一种增强，是CSS 3的重要内容之一。（详情：http://www.qianduan.net/media-type-and-media-query.html） 87.【HTML】关于 Canvas 和 SVG 探讨的一篇文章：http://www.sitepoint.com/blogs/2010/07/06/canvas-vs-svg-how-to-choose/ 88.【JS】"==" 比较两个对象会自动进行类型转换，例如比较 '12' == 12将返回 true；而 "===" 不进行任何转换必须完全相等 '12' === 12 将返回 false。 7.12 - 7.16 89.【JS】想在IE6,IE7中创建一个父页面元素，那么你必须使创建元素属于父页面。var dummy = parent.document.createElement("div");  在Firefox,IE8中，它允许在一个文档中创建要追加到另一个文档的元素。所以在Firefox,IE8中，可以使用parent.document也可以使用document。（张军） 90.【JS】e.preventDefault()仅仅是阻止默认事件，而 return false; 同时阻止了事件冒泡，详情参阅：http://css-tricks.com/return-false-and-prevent-default/ 91.【JS】在webkit排版引擎浏览器中，用脚本动态设置style后，即使removeAttribute('style');,也可以访问到style中的css属性值，而FF、IE、Opera下均不可获取。 例子： obj.style.width='500px'; obj.removeAttribute('style'); console.log(obj.style.width);//webkit排版引擎下可以获取到值（熊松松） 92.【HTML】关于 Firefox 在怪异模式下的一些特性：http://www.javaeye.com/topic/709316 93.【CSS】在 IE6/7/8 [...]]]></description>
			<content:encoded><![CDATA[<p>本月前端 Tips:</p>
<pre>
<strong>7.1 - 7.2</strong>

84.【CSS】绝对定位元素盖住链接或添加某事件handle的元素后，那么该链接的默认行为（页面跳转）或元素事件将不会被触发。Firefox3.6+/Safari4+/Chrome支持一个称为pointer-events的css属性，使用该属性可以决定是否能穿透绝对定位元素去触发下面元素的某些行为。（<a href="https://developer.mozilla.org/en/CSS/pointer-events">https://developer.mozilla.org/en/CSS/pointer-events</a>）

83.【JS】Number,Boolean,String,Undefined这几种基本类型混合比较时，会将其转换成数字再进行比较；基本类型与复合对象进行比较时，会先将复合对象转换成基本类型（依次调用valueOf与toString方法）再进行比较；undefined被当成基本类型，undefined转换成数字是NaN，因此undefined与除null之外的其它类型值进行比较时始终返回false(注意NaN==NaN返回false)；null被当成复合对象，由于null没有valueOf与toString方法，因此和除了undefined之外的其它类型值进行比较时始终返回false。（<a href="http://www.javaeye.com/topic/696802">http://www.javaeye.com/topic/696802</a>）

<strong>7.5 - 7.9</strong>

84.【CSS】IE6及IE7/8怪异模式下，绝度定位元素当指定了left及right，而width或者height为默认值auto，此时浏览器无法正确地计算出width或者height的值，应该尽量避免此种情况设定固定的宽高，如不能避免，可以通过js获取宽高进行设置。（Google）

85.【JS】在插入文档后，IE下input.type属性为只读，如果需要修改可以通过新建另一个input控制显隐来达到目的。

86.【HTML】media type(媒体类型)是css 2中的一个非常有用的属性，通过media type我们可以对不同的设备指定特定的样式，从而实现更丰富的界面。media query(媒体查询)是对media type的一种增强，是CSS 3的重要内容之一。（详情：<a href="http://www.qianduan.net/media-type-and-media-query.html">http://www.qianduan.net/media-type-and-media-query.html</a>）

87.【HTML】关于 Canvas 和 SVG 探讨的一篇文章：<a href="http://www.sitepoint.com/blogs/2010/07/06/canvas-vs-svg-how-to-choose/">http://www.sitepoint.com/blogs/2010/07/06/canvas-vs-svg-how-to-choose/</a>

88.【JS】"=="  比较两个对象会自动进行类型转换，例如比较 '12' == 12将返回 true；而 "===" 不进行任何转换必须完全相等 '12' === 12 将返回 false。

<strong>7.12 - 7.16</strong>

89.【JS】想在IE6,IE7中创建一个父页面元素，那么你必须使创建元素属于父页面。var dummy = parent.document.createElement("div");  在Firefox,IE8中，它允许在一个文档中创建要追加到另一个文档的元素。所以在Firefox,IE8中，可以使用parent.document也可以使用document。（张军）

90.【JS】e.preventDefault()仅仅是阻止默认事件，而 return false; 同时阻止了事件冒泡，详情参阅：<a href="http://css-tricks.com/return-false-and-prevent-default/">http://css-tricks.com/return-false-and-prevent-default/</a>

91.【JS】在webkit排版引擎浏览器中，用脚本动态设置style后，即使removeAttribute('style');,也可以访问到style中的css属性值，而FF、IE、Opera下均不可获取。
例子：
obj.style.width='500px';
obj.removeAttribute('style');
console.log(obj.style.width);//webkit排版引擎下可以获取到值（熊松松）

92.【HTML】关于 Firefox 在怪异模式下的一些特性：<a href="http://www.javaeye.com/topic/709316">http://www.javaeye.com/topic/709316</a>

93.【CSS】在 IE6/7/8 怪异模式中，当使用一对引号将所有的字体家族名连同分割的逗号全部包含，浏览器会修复此定义错误，多余的引号会被忽略。比如：body{font-family: "Arial, Tahoma"}，IE6/7/8 怪异模式会修复此定义错误，而解析为：body{font-family: Arial, Tahoma}，所以默认的字体为 Arial，而其它浏览器或者标准模式下则会以之为错误而不解析，最终使用浏览器默认字体。（Google）

<strong>7.19 - 7.23</strong>

94.【JS】Array.prototype.sort的兼容以及相关知识：<a href="http://www.javaeye.com/topic/714688">http://www.javaeye.com/topic/714688</a>

95.【HTML】仅在Firefox中，table元素宽度属性百分比大于100%时，Firefox会按100%处理；如果是style中的CSS特性，则不会这么处理。建议给TABLE元素设置宽度的时候，不要使用width属性，而是使用CSS中的width特性。（Google）

96.【PHP】$_GET 和 $_POST 等用户提供的数据如果使用不当，如验证、过滤不全面，就很容易造成安全问题。通常情况下，我们会编写“一坨”正则来验证数据格式是否合法。详情请参阅：<a href="http://www.gracecode.com/archives/3029/">http://www.gracecode.com/archives/3029/</a> （明城）

97.【JS】focus() 方法可滚动文档以使 Anchor 对象或者表单元素的位置变为可见，因此在定位表单或者锚点时不需改变 hash 而通过 focus() 方法来实现。

98.【CSS】IE6及IE7/8怪异模式仅支持A元素的:hover及:active，IE7标准模式支持所有元素的:hover，但:active仍仅支持A元素，除IE8标准模式以外的IE均不支持:focus。（Google）

<strong>7.26 - 7.30</strong>

99.【JS】设置option元素中的文本时需要注意：用doc.createElement('option')创建的节点，IE是无法直接设置text来改变文本的。必须通过 option.appendChild(doc.createTextNode(txt));来实现。但是，一旦节点被插入到页面DOM后，就可以直接设置option.text了。（熊松松）

100.【JS】delete 操作符用来删除对象的属性或者数组元素，对于使用 var 来声明的变量，是不能删除的，这一点在所有浏览器里表现一致（注意：在 firebug 中可以删除），直接全局声明（未带 var）的变量可以删除，这一点在 IE 9 preview 中除外。详情可参阅：
<a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/delete_Operator">https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/delete_Operator</a> <a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Special_Operators/delete_Operator">http://www.javaeye.com/topic/720816</a>

101.【HTML】样式的解析规则是从右到左，比如 div p {},浏览器解析是先匹配到 p，再匹配到 div。（圆心）

102.【Flash】SWF 嵌入到网页中默认 wmode 为 window，意味着是在页面中以新窗口模式播放flash，不受HTML影响,永远在页面最顶端。（龙藏）

103.【CSS】IE6 下没有“干净”的空 div，必须显式地设置 line-height 为 0 方可。（法海）
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/css/tips-2010-7/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>关于 focus 和 blur 事件</title>
		<link>http://www.12sui.cn/javascript/something-about-focus-and-blur/</link>
		<comments>http://www.12sui.cn/javascript/something-about-focus-and-blur/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 12:54:13 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=1037</guid>
		<description><![CDATA[比如，有一个表单，当聚焦其中某一个输入框时显示提交按钮，当失焦的时候，隐藏提交按钮，或者显隐其它操作，这里仅以最简单的为例，我必须承认这种交互的无聊，但是人在江湖身不由己啊。 首先想到的应该是使用 focus 和 blur 事件，但是问题在于就算按钮显示出来了，我也点不到啊，一点就失焦了。。。一些人会想到不用 blur 事件，给 document 绑定 onclick 事件，但是这会带来一些副作用： document 上绑的事件太多，累啊； 当用户使用 tab 键切换的时候不会触发； 当页面被以 iframe 形式嵌入页面的时候，点了输入框，然后点父页面的 document 并不会触发事件； &#8230; 回头来看，还是 blur 靠谱，但是如何克服问题呢，其实很简单，给 blur 事件添加一个延时，经过各种测试，Opera、Firefox、IE8 最佳时间为 120 ms，IE7、IE6 最佳时间为 130 ms，Chrome 表现怪异，所以综合起来，取 130 ms 比较靠谱。 Demo: http://www.12sui.cn/test/event/focus-blur-100726.html]]></description>
			<content:encoded><![CDATA[<p>比如，有一个表单，当聚焦其中某一个输入框时显示提交按钮，当失焦的时候，隐藏提交按钮，或者显隐其它操作，这里仅以最简单的为例，我必须承认这种交互的无聊，但是人在江湖身不由己啊。</p>
<p>首先想到的应该是使用 focus 和 blur 事件，但是问题在于就算按钮显示出来了，我也点不到啊，一点就失焦了。。。一些人会想到不用 blur 事件，给 document 绑定 onclick 事件，但是这会带来一些副作用：</p>
<ol>
<li>document 上绑的事件太多，累啊；</li>
<li>当用户使用 tab 键切换的时候不会触发；</li>
<li>当页面被以 iframe 形式嵌入页面的时候，点了输入框，然后点父页面的 document 并不会触发事件；</li>
<li>&#8230;</li>
</ol>
<p>回头来看，还是 blur 靠谱，但是如何克服问题呢，其实很简单，给 blur 事件添加一个延时，经过各种测试，Opera、Firefox、IE8 最佳时间为 120 ms，IE7、IE6 最佳时间为 130 ms，Chrome 表现怪异，所以综合起来，取 130 ms 比较靠谱。</p>
<p>Demo: <a href="http://www.12sui.cn/test/event/focus-blur-100726.html">http://www.12sui.cn/test/event/focus-blur-100726.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/javascript/something-about-focus-and-blur/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>前端 tips（2010.6）</title>
		<link>http://www.12sui.cn/css/tips-2010-6/</link>
		<comments>http://www.12sui.cn/css/tips-2010-6/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 00:15:54 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=1019</guid>
		<description><![CDATA[本月前端 Tips: 6.1 - 6.4 64.【JS】IE下操作innerHTML，向里面插入的内容包含有&#60;style&#62;标签的，style标签不会被解析，可以通过内联或者外联样式去解决。（龙刚） 65.【CSS】对于类似 .a.b {} 这样的样式，ie6仅能识别.b，会忽略掉前边的 .a，使用这种方式就会带来一些问题，而且在重置时也比较费劲，一般不推荐过多的使用此类形式来定义样式。 66.【CSS】在作input与后边文字元素垂直居中的时候，一般做法是：input=>vertical-align:middle;在IE浏览器中均可实现垂直居中对齐，但是在火狐下不是太灵活，可以使用vertical-align:-num（num:代表合适的数值），来调整差距。（涵宇） 67.【浏览器】浏览器对于样式表的处理可分成两类。FF和Opera会先渲染，之后如果样式被改则刷新渲染；Chrome、IE和Safari等到样式表全好了后才渲染。(通常他们只延时渲染样式表之后的内容，但IE在某种情况下会延时渲染全部)（涵宇） 6.7 - 6.13 68.【CSS】IE6/7及IE8怪异模式中，text-align:center可以使块级元素也居中对齐。其他浏览器中，textalign: center仅作用于行内内容上。IE怪异模式中，给块级元素设置margin-left:auto;margin-right:auto无法使其相对于其父容器居 中对齐。其他浏览器中则不存在此现象。（Google） 69.【JS】有时候需要获取到flash对象，因此给object添加了id，给embed添加了name，两者的值刚好相同。此时如果使用window[name]来获取flash对象，各浏览器的表现就不一致了：在Opera/Safar/Chrome获取到的是一个集合HTMLCollection，弹出其length是2，在Opera/Safari/chrome中分别取出第1,2个元素分别是object，embed元素。准确的获取flash对象可以通过以下方式： function getFlashObj(name){         return document[name] &#124;&#124; window[name];    }  （来源：http://www.javaeye.com/topic/684672） 70.【CSS】当A标签缺失href属性后，它相当于普通的标签，在IE6下，普通标签是不支持“:hover”伪类的。因此，对缺失href属性的A标签设置“:hover”伪类是无效的。（Google） 71.【CSS】w3c css21规范中指出：A:hover必须放置在A:link和A:visited之后，否则将隐藏A:hover内定义的相同规则。同理，A:active应在A:hover之后，否则A:active中的相同规则将被隐藏（L-V-H-A）。在IE7(S)/IE8(S)/Firefox(S)(Q)/Chrome(S)(Q)/Safari(S)(Q)下，A标签的伪类遵循w3c css21规范中的L-V-H-A顺序标准。而在IE6(S)(Q)/IE7(Q)/IE8(Q)下则不遵循。（注：Q：怪异模式，S：标准模式）（Google） 72.【JS】正则表达式中，g表示全局配，如果正则表达式中带有g，每次匹配后lastindex会更新一次，比如：var s = 'abac',re = /a/g; 初始值lastIndex为0，第一次匹配后，lastIndex变为1，第二次匹配后lastIndex变为3，第三次匹配没有匹配到，lastIndex则变为0，可以通过以下代码进行测试： var s = 'abac',re = /a/g; console.log(re.lastIndex); console.log(re.test(s)); console.log(re.lastIndex); console.log(re.test(s)); console.log(re.lastIndex); console.log(re.test(s)); console.log(re.lastIndex); 另外，建议在使用test检测的时候不要带上全局配。（龙刚、空帷） 73.【CSS】在一些切图的活动页面，如果出现图片裂缝问题，就在全局样式里加一个 img { vertical-align:middle;}，即可解决。（龙刚） [...]]]></description>
			<content:encoded><![CDATA[<p>本月前端 Tips:</p>
<pre>
<strong>6.1 - 6.4</strong>

64.【JS】IE下操作innerHTML，向里面插入的内容包含有&lt;style&gt;标签的，style标签不会被解析，可以通过内联或者外联样式去解决。（龙刚）

65.【CSS】对于类似 .a.b {} 这样的样式，ie6仅能识别.b，会忽略掉前边的 .a，使用这种方式就会带来一些问题，而且在重置时也比较费劲，一般不推荐过多的使用此类形式来定义样式。

66.【CSS】在作input与后边文字元素垂直居中的时候，一般做法是：input=>vertical-align:middle;在IE浏览器中均可实现垂直居中对齐，但是在火狐下不是太灵活，可以使用vertical-align:-num（num:代表合适的数值），来调整差距。（涵宇）

67.【浏览器】浏览器对于样式表的处理可分成两类。FF和Opera会先渲染，之后如果样式被改则刷新渲染；Chrome、IE和Safari等到样式表全好了后才渲染。(通常他们只延时渲染样式表之后的内容，但IE在某种情况下会延时渲染全部)（涵宇）

<strong>6.7 - 6.13</strong>

68.【CSS】IE6/7及IE8怪异模式中，text-align:center可以使块级元素也居中对齐。其他浏览器中，textalign:
center仅作用于行内内容上。IE怪异模式中，给块级元素设置margin-left:auto;margin-right:auto无法使其相对于其父容器居
中对齐。其他浏览器中则不存在此现象。（Google）

69.【JS】有时候需要获取到flash对象，因此给object添加了id，给embed添加了name，两者的值刚好相同。此时如果使用window[name]来获取flash对象，各浏览器的表现就不一致了：在Opera/Safar/Chrome获取到的是一个集合HTMLCollection，弹出其length是2，在Opera/Safari/chrome中分别取出第1,2个元素分别是object，embed元素。准确的获取flash对象可以通过以下方式：

	function getFlashObj(name){   
	     return document[name] || window[name];   
	} 

（来源：http://www.javaeye.com/topic/684672）

70.【CSS】当A标签缺失href属性后，它相当于普通的标签，在IE6下，普通标签是不支持“:hover”伪类的。因此，对缺失href属性的A标签设置“:hover”伪类是无效的。（Google）

71.【CSS】w3c css21规范中指出：A:hover必须放置在A:link和A:visited之后，否则将隐藏A:hover内定义的相同规则。同理，A:active应在A:hover之后，否则A:active中的相同规则将被隐藏（L-V-H-A）。在IE7(S)/IE8(S)/Firefox(S)(Q)/Chrome(S)(Q)/Safari(S)(Q)下，A标签的伪类遵循w3c css21规范中的L-V-H-A顺序标准。而在IE6(S)(Q)/IE7(Q)/IE8(Q)下则不遵循。（注：Q：怪异模式，S：标准模式）（Google）

72.【JS】正则表达式中，g表示全局配，如果正则表达式中带有g，每次匹配后lastindex会更新一次，比如：var s = 'abac',re = /a/g; 初始值lastIndex为0，第一次匹配后，lastIndex变为1，第二次匹配后lastIndex变为3，第三次匹配没有匹配到，lastIndex则变为0，可以通过以下代码进行测试：

var s = 'abac',re = /a/g;
console.log(re.lastIndex);
console.log(re.test(s));
console.log(re.lastIndex);
console.log(re.test(s));
console.log(re.lastIndex);
console.log(re.test(s));
console.log(re.lastIndex);

另外，建议在使用test检测的时候不要带上全局配。（龙刚、空帷）

73.【CSS】在一些切图的活动页面，如果出现图片裂缝问题，就在全局样式里加一个 img { vertical-align:middle;}，即可解决。（龙刚）

74.【CSS】在IE8中，-ms-filter是filter的别名，两者的区别是前者的属性值必须被单引号或双引号包围，而后者则不是必须的，而在IE8之前的版本中，filter的属性值必须不被单引号或双引号包围。（http://www.ued163.com/?p=818）

<strong>6.17,6.21 - 6.25 </strong>

75.【CSS】尽量不要在浮动元素上使用 clear 特性，避免发生一些奇怪的兼容性问题，比如：在IE6(S)(Q)/IE7(S)(Q)/IE8(Q)中，如果clear特性被设置在一个浮动的元素上时，该浮动元素可能会与其前边的浮动元素放置在同一行。。。等等~（Google）

76.【CSS】"Layout"是IE/Win的专有概念，它决定了元素如何对其内容进行定位和尺寸计算，与其他元素的关系和相互作用，以及对应用还有使用者的影响。"Layout"可以被某些CSS特性(property)不可逆的触发，而某些HTML元素本身就具有layout。（Google）

77.【CSS】在使用CSS来写一个三角形的时候，需要注意一点，当边框设置为transparent时ie6下会显示出一个灰底，所以，ie6下要设置成背景的颜色，但是对于渐变背景的话此方法就不再适用了，建议使用图片代替。

78.【JS】一篇关于计时器的文章：http://www.sitepoint.com/blogs/2010/06/23/creating-accurate-timers-in-javascript/

79.【HTML】IE中IFRAME元素有一个专有的allowtransparency属性，参见：http://msdn.microsoft.com/zhcn/library/ms533072(en-us,VS.85).aspx。当其值为“true”时，IFRAME元素可以透明。当没有allowtransparency属性或者allowtransparency属性值不为“true”时，IFRAME元素的背景色始终为“#FFFFFF”，并且设置其背景色也无效。当allowtransparency属性为“true”后，IFRAME元素的背景色随
即变为“transparent”，然后我们可以随意设置其背景色。（Google）

80.【CSS】IE6及IE(Q)中BODY元素的背景色不是CSS规定的transparent，而是#FFFFFF。这个#FFFFFF是由background-color:window得来，window属性为是Windows系统主题设定的“窗口背景色”，这个设置会影响很多程序的窗口背景色，而其他浏览器多不受此影响。（Google）

<strong>6.28 - 6.30</strong>

81.【JS】replace函数的第二个参数可以为字符串或者函数，当为函数的时候，它有 n+3 个参数，其中 n 为 () 的个数，第一个参数是匹配模式的字符串，中间的 n 个参数分别对应匹配到的各个 () ，第 n+2 个参数声明了匹配在 string 中出现的位置，最后一个参数是 string 自身。

82.【JS】通常情况下，当一个页面出现滚动条的时候，获取scrollTop方法在各个浏览器下有些差异。Chrome、Opera、Safari可以通过doc.body.scrollTop方式来获取，而IE、FF下得到的值是0，但可以通过doc.getElementsByTagName('html')[0].scrollTop来获取。简便的解决办法：
var s1=document.body.scrollTop,s2=document.getElementsByTagName('html')[0].scrollTop;//返回非0，即真实有效的值
return Math.max(s1,s2);（熊松松）

83.【JS】如果一个对象并存valueOf和toString方法，那么在数值运算中，优先调用valueOf，字符串运算中，优先调用toString。（涵宇，龙刚）
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/css/tips-2010-6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>String.replace()</title>
		<link>http://www.12sui.cn/javascript/string-replace/</link>
		<comments>http://www.12sui.cn/javascript/string-replace/#comments</comments>
		<pubDate>Sat, 26 Jun 2010 10:07:33 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=985</guid>
		<description><![CDATA[首先感谢空空帮忙解决问题。 昨天在做 Demo 的时候，Html 模板去替换数据的时候遇到一个问题，简单描述下： Code: var str = '&#60;ul&#62;&#60;li&#62;{Num1}&#60;/li&#62;&#60;li&#62;{Num2}&#60;/li&#62;&#60;li&#62;{Num3}&#60;/li&#62;&#60;/ul&#62;',//template data = [1012, 1210, 5210];//data str = str.replace(/{Num(\d)}/g, data['$1']); 目的很简单，我就是想把字符串中的相关数字替换成我取到的数据中的真实数字，杯具的是此路不通，结果得到的是 undefine。于是问了空空，空空给的回复是用函数： str = str.replace(/{Num(\d)}/g, function(nul, key) { return data[key - 1];}); 当时我就震惊了，偶不知道后边的参数还可以用函数，out了。。。回家查了下犀牛书以及百度Google，略有所知。 第二个参数可以为字符串或者函数，当为函数的时候，它有 n+3 个参数，其中 n 为 () 的个数，第一个参数是匹配模式的字符串，中间的 n 个参数分别对应匹配到的各个 () ，第 n+2 个参数声明了匹配在 string 中出现的位置，最后一个参数是 string 自身。 例： var str = 'i love [...]]]></description>
			<content:encoded><![CDATA[<p>首先感谢<a href="http://www.quchao.com/">空空</a>帮忙解决问题。</p>
<p>昨天在做 Demo 的时候，Html 模板去替换数据的时候遇到一个问题，简单描述下：</p>
<p><strong>Code:</strong></p>
<pre>
var str = '&lt;ul&gt;&lt;li&gt;{Num1}&lt;/li&gt;&lt;li&gt;{Num2}&lt;/li&gt;&lt;li&gt;{Num3}&lt;/li&gt;&lt;/ul&gt;',//template
    data = [1012, 1210, 5210];//data
str = str.replace(/{Num(\d)}/g, data['$1']);
</pre>
<p>目的很简单，我就是想把字符串中的相关数字替换成我取到的数据中的真实数字，杯具的是此路不通，结果得到的是 undefine。于是问了空空，空空给的回复是用函数：</p>
<pre>
str = str.replace(/{Num(\d)}/g, function(nul, key) { return data[key - 1];});
</pre>
<p>当时我就震惊了，偶不知道后边的参数还可以用函数，out了。。。回家查了下犀牛书以及百度Google，略有所知。</p>
<p>第二个参数可以为字符串或者函数，当为函数的时候，它有 n+3 个参数，其中 n 为 () 的个数，第一个参数是匹配模式的字符串，中间的 n 个参数分别对应匹配到的各个 () ，第 n+2 个参数声明了匹配在 string 中出现的位置，最后一个参数是 string 自身。</p>
<p><strong>例：</strong></p>
<pre>
var str = 'i love jolin',
    func = function(word) {
        return word.substring(0, 1).toUpperCase() + word.substring(1);//将所有单词的第一个字母改为大写
    };
console.log(str.replace(/\b\w+\b/g, func));
</pre>
<p><strong>参考资料：</strong></p>
<ul>
<li>《JavaScript 权威指南》</li>
<li><a href="http://www.baidu.com">百度</a></li>
<li><a href="http://www.google.com">Google</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/javascript/string-replace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>前端 tips（2010.5）</title>
		<link>http://www.12sui.cn/css/tips-2010-5/</link>
		<comments>http://www.12sui.cn/css/tips-2010-5/#comments</comments>
		<pubDate>Sun, 30 May 2010 16:00:19 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=944</guid>
		<description><![CDATA[本月前端 Tips: 5.4 - 5.7 44.【JS】element.onclick不管是在前还是在后，都会优于YAHOO.util.Event.on(element,'click',..)解析。（addEventListener/attachEvent，长天） 45.【JS】Firefox 对已存在的事件监听程序（通过传统事件模式注册的）采取的是替换（replace）操作，而非Firefox浏览器采取的是重写（overwrites）操作。（长天） 46.【CSS】如果有需要可以通过设置br { display:none} 来隐藏换行效果，最好的办法是建议在html中移除。（文河） 47.【HTML】在各浏览器下对于HTTP1.1标准的请求支持（同一个域名）的并行下载数为：ie6/7（2）、Firefox3、IE8（6）、Opera10/Chrome3/Safari4（4）（http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/）。（圆心） 5.10 - 5.14 48.【CSS】float 元素如果不指定宽度，在 ie6 下一般会有问题，如果出现此问题，可以尝试在 hack ie6，单独为 ie6 指定宽度。 49.【JS】相比其它语言来说，JavaScript 中位运算符的计算效率并不一定比其它计算方法高，有时候还会非常的低，而且不支持浮点数，一般不推荐使用。 50.【JS】link() method：创建一个链接可以通过str.link(“http://www.taobao.com”))来创建。（涵宇） 51.【JS】var m = n = 0;相当于var m = 0; n = 0; 实际上 n 被声明为了全局变量，造成了名称空间污染。（小马） 52.【CSS】IE7中，如果在父级元素和子级元素之间（div > p）有一个HTML注释，子选择器将不会工作。（Google） 5.17 - 5.21 53.【CSS】如果text-decoration属性指定给一个块级元素，它会影响该元素的所有行间级后代。如果它指定给（或影响）一个行内元素，它会影响该元素产生的所有框。text-decoration的underline、overline及line-through仅作用于文本。如果该元素没有内容或没有文本内容（例如HTML中的IMG元素），UA必须忽略该属性。IE与Opera在两种文档模式下均不会将text-decoration作用于IMG元素上，而Firefox、Chrome和Safari在混杂模式下与IE中一致，但是在标准模式下却打破W3C的规范在IMG元素上可以应用该样式。（Google） 54.【CSS】当定位元素的z-index未设置时（默认为auto），IE6/7/8下将会创建一个新的局部层叠上下文，其内的定位元素将受到父级元素的影响，即使子元素z-index设置高于与父元素平级的定位元素，也不会呈现在其上，而其它浏览器则不会。解决的方法就是明确定位元素的z-index。（Google） 55.【CSS】E6/7/8中width或height任意一个或两个都设为0都可以隐藏iframe，但是其它浏览器均隐藏不了，因为iframe的默认样式问题，还需设置border等样式，所以最快捷的方法就是通过visibility和display来进行设置。（Google） 56.【TMS】TMS不允许发布内容为空的页面，举例： 场景：如果有一个条件式的输出，在true的情况下输出一个片段，在false的情况下不输出任何内容。 结果：在true的情况下，是OK的；但是当false的情况时，发现发布始终无法成功。 [...]]]></description>
			<content:encoded><![CDATA[<p>本月前端 Tips:</p>
<pre>
<strong>5.4 - 5.7</strong>

44.【JS】element.onclick不管是在前还是在后，都会优于YAHOO.util.Event.on(element,'click',..)解析。（addEventListener/attachEvent，长天）

45.【JS】Firefox 对已存在的事件监听程序（通过传统事件模式注册的）采取的是替换（replace）操作，而非Firefox浏览器采取的是重写（overwrites）操作。（长天）

46.【CSS】如果有需要可以通过设置br { display:none} 来隐藏换行效果，最好的办法是建议在html中移除。（文河）

47.【HTML】在各浏览器下对于HTTP1.1标准的请求支持（同一个域名）的并行下载数为：ie6/7（2）、Firefox3、IE8（6）、Opera10/Chrome3/Safari4（4）（<a href="http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/">http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/</a>）。（圆心）

<strong>5.10 - 5.14</strong>

48.【CSS】float 元素如果不指定宽度，在 ie6 下一般会有问题，如果出现此问题，可以尝试在 hack ie6，单独为 ie6 指定宽度。

49.【JS】相比其它语言来说，JavaScript 中位运算符的计算效率并不一定比其它计算方法高，有时候还会非常的低，而且不支持浮点数，一般不推荐使用。

50.【JS】link() method：创建一个链接可以通过str.link(“http://www.taobao.com”))来创建。（涵宇）

51.【JS】var m = n = 0;相当于var m = 0; n = 0; 实际上 n 被声明为了全局变量，造成了名称空间污染。（小马）

52.【CSS】IE7中，如果在父级元素和子级元素之间（div > p）有一个HTML注释，子选择器将不会工作。（Google）

<strong>5.17 - 5.21</strong>

53.【CSS】如果text-decoration属性指定给一个块级元素，它会影响该元素的所有行间级后代。如果它指定给（或影响）一个行内元素，它会影响该元素产生的所有框。text-decoration的underline、overline及line-through仅作用于文本。如果该元素没有内容或没有文本内容（例如HTML中的IMG元素），UA必须忽略该属性。IE与Opera在两种文档模式下均不会将text-decoration作用于IMG元素上，而Firefox、Chrome和Safari在混杂模式下与IE中一致，但是在标准模式下却打破W3C的规范在IMG元素上可以应用该样式。（Google）

54.【CSS】当定位元素的z-index未设置时（默认为auto），IE6/7/8下将会创建一个新的局部层叠上下文，其内的定位元素将受到父级元素的影响，即使子元素z-index设置高于与父元素平级的定位元素，也不会呈现在其上，而其它浏览器则不会。解决的方法就是明确定位元素的z-index。（Google）

55.【CSS】E6/7/8中width或height任意一个或两个都设为0都可以隐藏iframe，但是其它浏览器均隐藏不了，因为iframe的默认样式问题，还需设置border等样式，所以最快捷的方法就是通过visibility和display来进行设置。（Google）

56.【TMS】TMS不允许发布内容为空的页面，举例：
场景：如果有一个条件式的输出，在true的情况下输出一个片段，在false的情况下不输出任何内容。
结果：在true的情况下，是OK的；但是当false的情况时，发现发布始终无法成功。
原因：TMS开发设定的这个规则……没有为什么，就是不让发布内容为空的页面，实在整不动的话，你放个相应的注释来绕过这个规则。（龙刚）

57.【CSS】在使用百分比定义宽高的时候，需要注意小数值的问题，取值都是四舍五入，IE6、IE7、Chrome、Safari的所有模式以及IE8的怪异模式下，百分比计算是基于其包含块的实际使用值来计算的，而Firefox的所有模式以及IE8的标准模式下百分比的计算是根据其包含块的计算值来计算的，也就是说，加入父级使用了百分比80%，子元素使用了百分比60%，那么前者的计算应该是父级取得实际使用值后再乘以60%再四舍五入得到子元素的实际使用值，而后者是80%*60%，最后四舍五入取的子元素的实际使用值。（Google）

<strong>5.24 - 5.28 , 5.31</strong>

58.【CSS】在IE6对A使用hover伪类之后，如果产生一些莫名其妙的问题，比如背景不显示，抑或是hover离开之后A标签的状态没有恢复。这时候可以在伪类规则中添加:border:none;|zoom:1;或在A元素上添加background来解决问题（IE7 的其它类型hover也可能产生同类问题，解决方法类似）（熊松松）。

59.【HTML】IE6 条件注释引起 IE8 下载阻塞：<a href="http://www.phpied.com/conditional-comments-block-downloads/">http://www.phpied.com/conditional-comments-block-downloads/</a>

60.【CSS】IE6、7下button和type为submit的input的默认padding无法去掉，需要加overflow:visible才能消除。（鸣人）

61.【JS】对于小于 1e-6 的数值来说，ToString 时会自动转换为科学计数法，比如 alert((0.0000012).toString()) 得到 0. 0000012 ，而  alert((0.00000012).toString()) 得到 1.2e-7 ，此种情况下使用 parseInt 得到的值可能就不是自己想要的，所以在参数类型不确定的时候，最好封装一层：
function parseInt2(a) {
    if(typeof a === 'number') {
        return Math.floor(a);
    }
    return parseInt(a);
}
（玉伯：<a href="http://lifesinger.org/blog/2010/05/the-trap-of-parseint/">http://lifesinger.org/blog/2010/05/the-trap-of-parseint/</a>）

62.【CSS】IE6/7/8 最多支持32个CSS文件引入。（测试地址：<a href="http://john.albin.net/ie-css-limits/link-test.html">http://john.albin.net/ie-css-limits/link-test.html</a>）

63.【CSS】为长页面添加上 body {overflow-y: scroll}，可以减少一次reflow。（云谦）
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/css/tips-2010-5/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>前端 tips （2010.4）</title>
		<link>http://www.12sui.cn/css/tips-2010-4/</link>
		<comments>http://www.12sui.cn/css/tips-2010-4/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 03:18:11 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=916</guid>
		<description><![CDATA[本月前端 Tips: 4.1 - 4.2 23.【JS】在遍历Dom结构时，应该尽量避免修改Dom，比如在遍历的时候不断的增加元素，可能会造成无限循环，每次修改都是实时更新的，如果有需要可以先建立一个静态列表进行遍历。 24.【CSS】在ie中如果设定了li元素的height,则项目列表中的序号不正常,而且list-style-position:inside;失效 4.6 - 4.9 25.【Mobile】GIF、PNG、TIFF最大尺寸上限是300万像素，也就是说，确保width * height ≤ 3 * 1024 * 1024。JPEG二次采样（颜色压缩）后的最大尺寸上限是3200万像素（王卓） 26.【JS】如果一个元素的 display 样式被设置为 none，即使其内容变化也不再需要重绘此元素，因为根本就不会显示此元素。可以利用这一点，当我们要显示某个盒子并且要修改其内容时，先修改后再显示，减少reflow。 27.【Mobile】canvas元素的最大尺寸上限是3百万像素，canvas对象的默认宽高是150 x 300像素。（王卓） 28.【JS】绝对不能为Object.prototype添加属性，所添加的任何属性和方法都可以通过for/in循环枚举，当一个对象被当做关联数组使用时将会带来很大的问题。 4.12 - 4.16 29.【Mobile】JavaScript执行时间限制在10秒之内，如果脚本执行时间超过10秒的话，Safari会在一个随机位置强制停止执行，可能会导致意想不到的后果。（王卓） 30.【CSS】针对所有IE浏览器的hack：\9，仅针对IE8的hack：\0。 31.【Mobile】单个资源文件必须小于10MB，适用于HTML、CSS、JavaScript、非流格式媒体。一次性打开最多的页面数量是8个（慎用Framesets）（王卓） 32.【CSS】如果一个盒子里只有图片，那么font-size的定义在现代浏览器下会影响到盒子的高度，设置line-height在现代浏览器下可以让图片垂直居中，而在ie6、7下则需要设置font-size来达到目的。 33.【JS】focus和blur事件不支持冒泡，但是它支持捕获，所以在事件代理中我们可以使用捕获，但是ie不支持捕获，ie可以通过focusin和focusout这两个专有事件来代替，它们是支持冒泡的。 4.19 - 4.23 34.【JS】需要做页面刷新的时候推荐使用location.replace和location.href两个方法，而不推荐使用location.reload和history.go(0)，因为这两个刷新相当于按F5刷新，有表单提交的页面很容易会给出是否重复提交表单的提示。 35.【CSS】关于ie的专有属性behavior，最近在cssbeauty上有一篇相关文档，大家可以看下，不推荐这种方式：http://fetchak.com/ie-css3/ 36.【CSS】可以使用 @-moz-document url-prefix() {} 来单独为 Firefox 做样式定义。 37.【CSS】important! 的优先级高于任何其他样式定义。 38.【JS】使用Array.join在Internet Explorer中进行字符串连接操作是最快的; 而+= 或者 String.prototype.concat.apply(object, arguments) 在其他浏览器中表现得更好。详细测试数据参见： http://www.sitepen.com/blog/2008/05/09/string-performance-an-analysis/ （赵成阳） 4.26 - 4.30 39.【JS】String.fromCharCode是String函数的一个静态方法，所以每次使用的时候都要按照 String.fromCharCode(num1,num2,...)这样的方式去使用。（此方法是用来反解码charCodeAt()生成的数字的）（涵宇） 40.【HTML】页面在载入图像的时候并不知道图像的尺寸，所以刚开始仅显示混杂在一起的问题，图片完全在载入后才会显示图片，这样在网速极慢的情况下就会造成页面的跳动，如果确定图片的大小尺寸的话，应该在img标签上设置宽高，这样的话可以在页面载入时会预先留好位置，避免发生类似问题。 41.【JS】关于Preload的一篇文章：http://www.phpied.com/preload-cssjavascript-without-execution/ 42.【CSS】对于input框，在定义高度后在ie下会出现各种很怪异的问题，所以我们一般不定义input框的高度，通过padding值来控制。 43.【JS】toFixed 方法返回一个以定点表示法表示的数字的字符串形式，但是有一点需要注意的是，各浏览器下返回的值会稍有不同，有些会进行四舍五入，而有些是进行直接截取，解决的方法一是重写这个方法，二是在进行相应操作时先乘以10的n次方，然后再转化为小数。]]></description>
			<content:encoded><![CDATA[<p>本月前端 Tips:</p>
<pre>
4.1 - 4.2

23.【JS】在遍历Dom结构时，应该尽量避免修改Dom，比如在遍历的时候不断的增加元素，可能会造成无限循环，每次修改都是实时更新的，如果有需要可以先建立一个静态列表进行遍历。

24.【CSS】在ie中如果设定了li元素的height,则项目列表中的序号不正常,而且list-style-position:inside;失效

4.6 - 4.9

25.【Mobile】GIF、PNG、TIFF最大尺寸上限是300万像素，也就是说，确保width * height ≤ 3 * 1024 * 1024。JPEG二次采样（颜色压缩）后的最大尺寸上限是3200万像素（王卓）

26.【JS】如果一个元素的 display 样式被设置为 none，即使其内容变化也不再需要重绘此元素，因为根本就不会显示此元素。可以利用这一点，当我们要显示某个盒子并且要修改其内容时，先修改后再显示，减少reflow。

27.【Mobile】canvas元素的最大尺寸上限是3百万像素，canvas对象的默认宽高是150 x 300像素。（王卓）

28.【JS】绝对不能为Object.prototype添加属性，所添加的任何属性和方法都可以通过for/in循环枚举，当一个对象被当做关联数组使用时将会带来很大的问题。

4.12 - 4.16

29.【Mobile】JavaScript执行时间限制在10秒之内，如果脚本执行时间超过10秒的话，Safari会在一个随机位置强制停止执行，可能会导致意想不到的后果。（王卓）

30.【CSS】针对所有IE浏览器的hack：\9，仅针对IE8的hack：\0。

31.【Mobile】单个资源文件必须小于10MB，适用于HTML、CSS、JavaScript、非流格式媒体。一次性打开最多的页面数量是8个（慎用Framesets）（王卓）

32.【CSS】如果一个盒子里只有图片，那么font-size的定义在现代浏览器下会影响到盒子的高度，设置line-height在现代浏览器下可以让图片垂直居中，而在ie6、7下则需要设置font-size来达到目的。

33.【JS】focus和blur事件不支持冒泡，但是它支持捕获，所以在事件代理中我们可以使用捕获，但是ie不支持捕获，ie可以通过focusin和focusout这两个专有事件来代替，它们是支持冒泡的。

4.19 - 4.23

34.【JS】需要做页面刷新的时候推荐使用location.replace和location.href两个方法，而不推荐使用location.reload和history.go(0)，因为这两个刷新相当于按F5刷新，有表单提交的页面很容易会给出是否重复提交表单的提示。

35.【CSS】关于ie的专有属性behavior，最近在cssbeauty上有一篇相关文档，大家可以看下，不推荐这种方式：http://fetchak.com/ie-css3/

36.【CSS】可以使用 @-moz-document url-prefix() {} 来单独为 Firefox 做样式定义。

37.【CSS】important! 的优先级高于任何其他样式定义。

38.【JS】使用Array.join在Internet Explorer中进行字符串连接操作是最快的; 而+= 或者 String.prototype.concat.apply(object, arguments) 在其他浏览器中表现得更好。详细测试数据参见：
http://www.sitepen.com/blog/2008/05/09/string-performance-an-analysis/ （赵成阳）

4.26 - 4.30

39.【JS】String.fromCharCode是String函数的一个静态方法，所以每次使用的时候都要按照 String.fromCharCode(num1,num2,...)这样的方式去使用。（此方法是用来反解码charCodeAt()生成的数字的）（涵宇）

40.【HTML】页面在载入图像的时候并不知道图像的尺寸，所以刚开始仅显示混杂在一起的问题，图片完全在载入后才会显示图片，这样在网速极慢的情况下就会造成页面的跳动，如果确定图片的大小尺寸的话，应该在img标签上设置宽高，这样的话可以在页面载入时会预先留好位置，避免发生类似问题。

41.【JS】关于Preload的一篇文章：http://www.phpied.com/preload-cssjavascript-without-execution/

42.【CSS】对于input框，在定义高度后在ie下会出现各种很怪异的问题，所以我们一般不定义input框的高度，通过padding值来控制。

43.【JS】toFixed 方法返回一个以定点表示法表示的数字的字符串形式，但是有一点需要注意的是，各浏览器下返回的值会稍有不同，有些会进行四舍五入，而有些是进行直接截取，解决的方法一是重写这个方法，二是在进行相应操作时先乘以10的n次方，然后再转化为小数。
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/css/tips-2010-4/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>前端 tips （2010.3）</title>
		<link>http://www.12sui.cn/css/tips-2010-3/</link>
		<comments>http://www.12sui.cn/css/tips-2010-3/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 10:08:35 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=896</guid>
		<description><![CDATA[由圆心提出的，搜集组内每个人的小tip，每天发一个在群里和大家分享、讨论，有些可能只适合淘宝的环境，大家择优浏览哈： 3.2 - 3.5 1.【约定】文件命名全部都用小写和下划线，样式命名全部使用小写和连接符，JS的钩子使用“J_HiTao” 2.【HTML】需要为html元素添加自定义属性的时候，首先要考虑下有没有默认的已有的合适标签去设置，如果没有，可以使用以"data-"为前缀来添加自定义属性，避免使用"data:" 3.【约定】文件要求编码必须为GBK、GB2312或者GB18030 4.【HTML】html代码要求所有的标签、属性都是用小写字母，属性值使用双引号括起来，使用js插入html代码的时候也要注意保持一致。 3.8 - 3.12 5.【JS】在书写代码时，应该尽量在函数开始地方统一进行变量声明，变量名注意语义化，一般使用名词来命名，不要在意名字的长度，压缩后会替换为简短的变量名的。 6.【JS】浮点数的计算过程是：先将浮点数转化为二进制，然后进行计算，再转化为十进制，这样子会有少许的误差，所以为了避免这种误差我们可先将浮点数乘以10的n次方，转化为整数计算，然后再转化为小数。 7.【Firefox】Firefox中将同一域名下不同端口的访问也视为跨域操作。 8.【Mobile】强制WEB App在iPhone中全屏模式运行 &#60;meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /&#62; &#60;meta name="apple-mobile-web-app-capable" content="yes" /&#62; &#60;meta names="apple-mobile-web-app-status-bar-style" content="black-translucent" /&#62;（王卓） 9.【Mobile】移动设备上的CSS媒体查询应用： img {   margin:0 0 10px 10px;   float:right; } @media all and (max-width: 480px) {   img {     margin:10px auto;     float:none;     display:block;   } } @media all and (max-width: 240px) {   img {     display:none;   } } 释义：浏览器中的图片在屏幕大于480px时会向右浮动，当屏幕小于480px时图片display:block并居中，屏幕小于240px非常小时，直接让图片消失掉 (Opera/Safari3 only) （王卓） 3.15-3.19 10.【JS】Date()作为普通函数被调用时，Date()将忽略传递给它的所有参数，返回当前日期和事件的字符串标识。 11.【HTML】在页面中写button的时候，一定要记得加上button的type类型，否则，某些浏览器会将其认为是submit类型。 12.【JS】在绑定表单的提交事件时，如果button的type类型为submit时，要通过绑定form的submit事件，避免使用button的click事件，因为如果表单可以通过回车提交的话，绑定在button上的click事件是不会触发的。 13.【HTML】img对象alt和title的解析： alt：当照片不存在或者load错误时的提示； title：照片的tip说明。 在IE中如果没有定义title，alt也可以作为img的tip使用，但是在FF中，两者完全按照标准中的定义使用 结论：大家在定义img对象时，最后将alt和title对象都写全，保证在各种浏览器中都能正常使用（涵宇） 14.【JS】在使用form[name]的方式去取同一name的多个表单元素时，需要注意一点，如果有多个的话，返回的是一个数组，如果仅有一个的话直接返回这个元素而不是一个数组，所以大家在循环之前要先做判断，以免报错。 3.22 - 3.26 15.【JS】关于Degrading Script Tags，这是一种脚本文件加载完成后执行一段脚本的方法，由jQuery的作者John提出，不了解的可以看下作者的博客：http://ejohn.org/blog/degrading-script-tags/ 16.【JS】有些浏览器对 [...]]]></description>
			<content:encoded><![CDATA[<p>由<a href="http://www.planabc.net/">圆心</a>提出的，搜集组内每个人的小tip，每天发一个在群里和大家分享、讨论，有些可能只适合淘宝的环境，大家择优浏览哈：</p>
<pre>
3.2 - 3.5

1.【约定】文件命名全部都用小写和下划线，样式命名全部使用小写和连接符，JS的钩子使用“J_HiTao”

2.【HTML】需要为html元素添加自定义属性的时候，首先要考虑下有没有默认的已有的合适标签去设置，如果没有，可以使用以"data-"为前缀来添加自定义属性，避免使用"data:"

3.【约定】文件要求编码必须为GBK、GB2312或者GB18030

4.【HTML】html代码要求所有的标签、属性都是用小写字母，属性值使用双引号括起来，使用js插入html代码的时候也要注意保持一致。

3.8 - 3.12

5.【JS】在书写代码时，应该尽量在函数开始地方统一进行变量声明，变量名注意语义化，一般使用名词来命名，不要在意名字的长度，压缩后会替换为简短的变量名的。

6.【JS】浮点数的计算过程是：先将浮点数转化为二进制，然后进行计算，再转化为十进制，这样子会有少许的误差，所以为了避免这种误差我们可先将浮点数乘以10的n次方，转化为整数计算，然后再转化为小数。

7.【Firefox】Firefox中将同一域名下不同端口的访问也视为跨域操作。

8.【Mobile】强制WEB App在iPhone中全屏模式运行
&lt;meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /&gt;
&lt;meta name="apple-mobile-web-app-capable" content="yes" /&gt;
&lt;meta names="apple-mobile-web-app-status-bar-style" content="black-translucent" /&gt;（王卓）

9.【Mobile】移动设备上的CSS媒体查询应用：
img {
  margin:0 0 10px 10px;
  float:right;
}
@media all and (max-width: 480px) {
  img {
    margin:10px auto;
    float:none;
    display:block;
  }
}
@media all and (max-width: 240px) {
  img {
    display:none;
  }
}
释义：浏览器中的图片在屏幕大于480px时会向右浮动，当屏幕小于480px时图片display:block并居中，屏幕小于240px非常小时，直接让图片消失掉
(Opera/Safari3 only) （王卓）

3.15-3.19

10.【JS】Date()作为普通函数被调用时，Date()将忽略传递给它的所有参数，返回当前日期和事件的字符串标识。

11.【HTML】在页面中写button的时候，一定要记得加上button的type类型，否则，某些浏览器会将其认为是submit类型。

12.【JS】在绑定表单的提交事件时，如果button的type类型为submit时，要通过绑定form的submit事件，避免使用button的click事件，因为如果表单可以通过回车提交的话，绑定在button上的click事件是不会触发的。

13.【HTML】img对象alt和title的解析：
alt：当照片不存在或者load错误时的提示；
title：照片的tip说明。
在IE中如果没有定义title，alt也可以作为img的tip使用，但是在FF中，两者完全按照标准中的定义使用
结论：大家在定义img对象时，最后将alt和title对象都写全，保证在各种浏览器中都能正常使用（涵宇）

14.【JS】在使用form[name]的方式去取同一name的多个表单元素时，需要注意一点，如果有多个的话，返回的是一个数组，如果仅有一个的话直接返回这个元素而不是一个数组，所以大家在循环之前要先做判断，以免报错。

3.22 - 3.26

15.【JS】关于Degrading Script Tags，这是一种脚本文件加载完成后执行一段脚本的方法，由jQuery的作者John提出，不了解的可以看下作者的博客：http://ejohn.org/blog/degrading-script-tags/

16.【JS】有些浏览器对 try-catch-finally 的处理并不高效，所以把 catch 语句放在关键循环中将极大影响性能。如果可能，应在脚本中不频繁被调用的地方进行异常处理，或通过检查某种动作是否被支持来避免使用。

17.【JS】尽量向 setTimeout() 和 setInterval()传送函数名，而不要传送字串。setTimeout() 和 setInterval() 方法近似于 eval。如果传进参数是字符串，则在一段时间之后，会和 eval一样执行字符串值，当然其低效率也和 eval 一样。但这些方法也可以接受函数作为第一个参数。在一段时间后将调用此函数，但此函数可在编译时被解释和优化，也就是说会有更好的性能。

18.【CSS】经典的垂直问题中，img 的父容器如果 float 了，那么其 display table-cell 将失效，table-cell 只能在 display static 的时候有效，因此解决方案是给 img 再加个包装容器，原来的父容器 float，包装器 table-cell……（法海）

19.【编辑器】编辑器下的bug,选中字体背景色时，除了对gecko浏览器要对backColor替换成hiliteColor,opera下也有问题。设置背景色时需用hiliteColor~（子涯）

3.29 - 3.31

20.【JS】如果页面里只有div和script标签没有body,head什么的,而且div里面只有空格没有字符的话,这时候用document.getElementById("****")获取不到div的引用（孙信宇）

21.【JS】字符串合并是比较慢的。+ 运算符并不管是否将结果保存在变量中。它会创建新 string 对象，并将结果赋给此对象；也许新对象会被赋给某个变量。下面是一个常见的字符串合并语句：
a += 'x' + 'y';
此代码首先创建临时string对象保存合并后的'xy'值，然后和a变量合并，最后将结果赋给a。下面的代码使用两条分开的命令，但每次都直接赋值给a ，因此不需要创建临时string对象。结果在大部分浏览器中，后者比前者快20%，而且消耗更少的内存：
a += 'x';
a += 'y';

22.【JS】在设置元素样式时，应该尽量一次设定，避免多次设定，较少reflow，可以通过改变元素的class来达到目的。
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/css/tips-2010-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>new Date()</title>
		<link>http://www.12sui.cn/javascript/new-date-2/</link>
		<comments>http://www.12sui.cn/javascript/new-date-2/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 12:56:13 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Date()]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=773</guid>
		<description><![CDATA[昨天在调试bug的时候遇到一个问题，先看下代码： &#60;script&#62; var str = '2010-01-20'; alert(new Date(str.split('-').join(','))); &#60;/script&#62; 大家觉得这个会弹出来什么时间呢？2010年1月20日 or 2009年12月20日？。。。答案是丰富多彩的，看下在各浏览器下的情况： Firefox、Chrome 输出了2010年1月20日，Opera 输出了 2010年1月1日，Safari 提示非法时间，IE 输出了 NaN，这是为什么呢？ 查阅权威指南ing&#8230;. new Date()可以有三种类型的参数，一是数字（milliseconds），表示毫秒，一是字符串（datestring），其格式是Date.parse()接受的格式，一是年月日&#8230;.（year,month,day,hours,minutes,seconds,ms），我这里显然用的是第二种字符串了，ie 输出 NaN 表示ie其实并不支持这第二种参数形式，大家不妨自测一下，其它浏览器有正确输出的也有提示格式不对的等等，那么原因肯定在于各浏览器所能接受的格式有所不同，让我们进一步进行测试，测试结果如下。 其实我那么些的目的是为了使用第三种形式的参数：2010,1,20，结果。。。被我忽略的是其实我传进去的是一个字符串。。。也就是使用了第二种参数形式。。。杯具呀。。。 各浏览器支持的字符串的时间分隔符表： 分隔符 IE Opera Firefox Chrome Safari / √ √ √ √ √ - √ √ × √ × , × × √ √ × # × × × [...]]]></description>
			<content:encoded><![CDATA[<p>昨天在调试bug的时候遇到一个问题，先看下代码：</p>
<pre>
&lt;script&gt;
var str = '2010-01-20';
alert(new Date(str.split('-').join(',')));
&lt;/script&gt;
</pre>
<p>大家觉得这个会弹出来什么时间呢？2010年1月20日 or 2009年12月20日？。。。答案是丰富多彩的，看下在各浏览器下的情况：</p>
<p><a href="http://www.12sui.cn/wp-content/uploads/2010/01/new-date.png"><img src="http://www.12sui.cn/wp-content/uploads/2010/01/new-date-463x1024.png" alt="new date" title="new date" width="463" height="1024" /></a></p>
<p><span id="more-773"></span></p>
<p>Firefox、Chrome 输出了2010年1月20日，Opera 输出了 2010年1月1日，Safari 提示非法时间，IE 输出了 NaN，这是为什么呢？</p>
<p>查阅权威指南ing&#8230;.</p>
<p>new Date()可以有三种类型的参数，一是数字（milliseconds），表示毫秒，一是字符串（datestring），其格式是Date.parse()接受的格式，一是年月日&#8230;.（year,month,day,hours,minutes,seconds,ms），我这里显然用的是第二种字符串了，ie 输出 NaN 表示ie其实并不支持这第二种参数形式，大家不妨自测一下，其它浏览器有正确输出的也有提示格式不对的等等，那么原因肯定在于各浏览器所能接受的格式有所不同，让我们进一步进行测试，测试结果如下。</p>
<p style="color:red">其实我那么些的目的是为了使用第三种形式的参数：2010,1,20，结果。。。被我忽略的是其实我传进去的是一个字符串。。。也就是使用了第二种参数形式。。。杯具呀。。。</p>
<p><strong>各浏览器支持的字符串的时间分隔符表：</strong></p>
<table class="compatibility-table">
<thead>
<tr>
<th>分隔符</th>
<th>IE</th>
<th>Opera</th>
<th>Firefox</th>
<th>Chrome</th>
<th>Safari</th>
</tr>
</thead>
<tbody>
<tr>
<td>/</td>
<td class="ok">√</td>
<td class="ok">√</td>
<td class="ok">√</td>
<td class="ok">√</td>
<td class="ok">√</td>
</tr>
<tr>
<td>-</td>
<td class="ok">√</td>
<td class="ok">√</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>,</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>#</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>*</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>$</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>!</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>@</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>%</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>.</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>?</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>&#8216;</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>&#8220;</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="ok">√</td>
<td class="no">×</td>
</tr>
<tr>
<td>^</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
</tr>
<tr>
<td>~</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
</tr>
<tr>
<td>(,),[,],{,}</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
</tr>
<tr>
<td>+</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
</tr>
<tr>
<td>:</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
</tr>
<tr>
<td>\</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
</tr>
<tr>
<td>|</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
<td class="no">×</td>
</tr>
</tbody>
</table>
<p>感叹一下，Chrome 好变态，基本上所有符号都支持了。。。或许有一天我们可以用它来区分各浏览器哈。。。<span style="color:red;font-weight:600">另外结果页证明了我前边的推断ie不支持第二种形式的参数时错误的，ie支持 / 这个分隔符的，另外也支持 &#8220;Aug 9, 1995&#8243; 之类的标准格式。</span></p>
<p>这个 bug 解决的方法其实很简单，就是采用第三种参数形式或者使用 &#8216;/&#8217; 来分隔：</p>
<pre>
&lt;script&gt;
var arr = '2010-01-20'.split('-');
alert(new Date(arr[0],arr[1]-1,arr[2]));

//or
var arr2 = '2010-01-20'.split('-');
alert(new Date(arr2.join('/'));
&lt;/script&gt;
</pre>
<p>看Firefox的 change log，应该是3.6开始支持 &#8211; 的，但是我这里测试没通过？记得在公司测试的时候是通过的呀。。。大家帮我测试一下吧。。。</p>
<p><strong>另外，在看权威指南的时候，又看到一句：</strong></p>
<p><q cite="《权威指南第五版》">Date()还可以作为普通函数被调用，而不带有运算符new。以这种方式调用时，Date()将忽略传递给它的所有参数，返回当前日期和事件的字符串标识。</q></p>
<p>^_^可以省几个字符了&#8230;</p>
<p>写了一个简单的脚本测试浏览器的支持情况，大家可以试下哈：<a href="http://www.12sui.cn/test/new-date-test.html">http://www.12sui.cn/test/new-date-test.html</a></p>
<p style="color:red">注：这里测试的仅是连接符类型的，其它的诸如&#8221;Aug 9, 1995&#8243;这种形式的没有做测试。测试浏览器为：IE6、IE7、IE8、Opera 10.10(Build 1893)、Firefox 3.6、Chrome 4.0.302.2、Safari 4.0.3(531.9.1)。</p>
<p><strong>参考资料：</strong></p>
<ul>
<li>JavaScript权威指南第五版</li>
<li><a href="https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/parse">Mozilla</a>
<li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/javascript/new-date-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>IE浏览器对Attribute的解析</title>
		<link>http://www.12sui.cn/javascript/attribute-ie/</link>
		<comments>http://www.12sui.cn/javascript/attribute-ie/#comments</comments>
		<pubDate>Fri, 25 Dec 2009 00:17:46 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=688</guid>
		<description><![CDATA[昨天遇到的一个bug，开发将一个自定义属性中的一个字母写成了大写，结果造成ie浏览器下的判断失效，这里记录一下，并在其它浏览器下作了测试。 Test Code: &#60;div id="test" data-Maxvalue="1" style="width:300px; height:200px; border:2px solid green; margin:50px auto; padding:20px"&#62; &#160;此div设置自定义属性data-Maxvalue值为1. &#60;/div&#62; &#60;script type="text/javascript"&#62; var el = document.getElementById('test'); alert(el.getAttribute('data-maxvalue')); el.setAttribute('data-maxvalue','2'); alert(el.getAttribute('data-maxvalue')); alert(el.getAttribute('data-Maxvalue')); el.setAttribute('data-maxValue','2'); alert(el.getAttribute('data-maxValue')); el.setAttribute('data-Maxvalue','2'); alert(el.getAttribute('data-maxValue')); &#60;/script&#62; 如果设置一个自定义属性data-Maxvalue，那么除ie外的所有浏览器都会忽略大小写而统一解析为data-maxvalue，可以用各自的developer tool查看下，而且在读取的时候也会忽略大小写，都不会造成读值、设值的问题，但是在ie浏览器下，显得非常的复杂。 在使用getAttribute读值的时候，ie会把里边的值忽略大小写，而去匹配html里的属性值，然后返回，使用setAttribute去设置的时候，ie同样会忽略大小写而去正确的设置html里的属性值，但是这个值你读不到，当你再去使用getAttribute去获取的时候，读到的依然是最初默认的值。只有你正确的书写attribute的值，并设置的时候才能正确的读取。也就是说，当你使用setAttribute去设置的时候一定要和源码里的大小写保持一致，而当你在使用getAttribute去读取的时候可以忽略其大小写。 总结：为了避免不必要的问题发生，在设置自定义属性的时候不要有大小写之分。对于html节点本身有的attribute，则应该依照ie的解析去书写，比如colSpan、rowSpan、frameBorder等等。 Demo测试地址：http://www.12sui.cn/test/attribute-ie.html 测试浏览器：IE6、IE7、IE8、Opera 10.10(Build 1893)、Firefox 3.5.6、Chrome 3.0.195.38、Safari 4.0.3(531.9.1)。]]></description>
			<content:encoded><![CDATA[<p>昨天遇到的一个bug，开发将一个自定义属性中的一个字母写成了大写，结果造成ie浏览器下的判断失效，这里记录一下，并在其它浏览器下作了测试。</p>
<p><strong>Test Code:</strong></p>
<pre>
&lt;div id="test" data-Maxvalue="1" style="width:300px; height:200px; border:2px solid green; margin:50px auto; padding:20px"&gt;
&nbsp;此div设置自定义属性data-Maxvalue值为1.
&lt;/div&gt;
&lt;script type="text/javascript"&gt;
var el = document.getElementById('test');
alert(el.getAttribute('data-maxvalue'));
el.setAttribute('data-maxvalue','2');
alert(el.getAttribute('data-maxvalue'));
alert(el.getAttribute('data-Maxvalue'));
el.setAttribute('data-maxValue','2');
alert(el.getAttribute('data-maxValue'));
el.setAttribute('data-Maxvalue','2');
alert(el.getAttribute('data-maxValue'));
&lt;/script&gt;
</pre>
<p>如果设置一个自定义属性data-Maxvalue，那么除ie外的所有浏览器都会忽略大小写而统一解析为data-maxvalue，可以用各自的developer tool查看下，而且在读取的时候也会忽略大小写，都不会造成读值、设值的问题，但是在ie浏览器下，显得非常的复杂。</p>
<p>在使用getAttribute读值的时候，ie会把里边的值忽略大小写，而去匹配html里的属性值，然后返回，使用setAttribute去设置的时候，ie同样会忽略大小写而去正确的设置html里的属性值，但是这个值你读不到，当你再去使用getAttribute去获取的时候，读到的依然是最初默认的值。只有你正确的书写attribute的值，并设置的时候才能正确的读取。也就是说，<font color=red>当你使用setAttribute去设置的时候一定要和源码里的大小写保持一致，而当你在使用getAttribute去读取的时候可以忽略其大小写</font>。</p>
<p><strong>总结：</strong>为了避免不必要的问题发生，在设置自定义属性的时候不要有大小写之分。对于html节点本身有的attribute，则应该依照ie的解析去书写，比如colSpan、rowSpan、frameBorder等等。</p>
<p>Demo测试地址：<a href="http://www.12sui.cn/test/attribute-ie.html">http://www.12sui.cn/test/attribute-ie.html</a></p>
<p>测试浏览器：IE6、IE7、IE8、Opera 10.10(Build 1893)、Firefox 3.5.6、Chrome 3.0.195.38、Safari 4.0.3(531.9.1)。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/javascript/attribute-ie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>doc and document</title>
		<link>http://www.12sui.cn/javascript/doc-and-document/</link>
		<comments>http://www.12sui.cn/javascript/doc-and-document/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 11:58:14 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=668</guid>
		<description><![CDATA[这是一个杯具！跟小虎学会了习惯用doc=document，然造成了一个杯具。。。就是在读取iframe的时候用了iframe.contentWindow.doc.body，接着就不起作用啦。。。有一点奇怪的是我改成了iframe.contentWindow[doc].body竟然也不行！只好正常点写啦：iframe.contentWindow.document.body，在此记录一下。 不能使用[doc]的原因：进入frame.contentWindow后，其实在iframe里并没有声明doc=document，所以doc在这里应该是undefined，为安全期间，建议此处使用的时候直接使用document。感谢小虎以及各位淘宝ued前端的指正哈~]]></description>
			<content:encoded><![CDATA[<p>这是一个杯具！跟<a href="http://www.macji.com">小虎</a>学会了习惯用doc=document，然造成了一个杯具。。。就是在读取iframe的时候用了iframe.contentWindow.doc.body，接着就不起作用啦。。。有一点奇怪的是我改成了iframe.contentWindow[doc].body竟然也不行！只好正常点写啦：iframe.contentWindow.document.body，在此记录一下。</p>
<p style="color:red">不能使用[doc]的原因：进入frame.contentWindow后，其实在iframe里并没有声明doc=document，所以doc在这里应该是undefined，为安全期间，建议此处使用的时候直接使用document。感谢<a href="http://www.macji.com">小虎</a>以及各位淘宝ued前端的指正哈~</p>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/javascript/doc-and-document/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
