- From: Kang-Hao (Kenny) Lu <kanghaol@oupeng.com>
- Date: Sat, 26 Oct 2013 00:03:09 +0800
- To: John Hax <johnhax@gmail.com>
- CC: 一丝 <yiorsi@gmail.com>, Leo Deng <myst.dg@gmail.com>, W3C HTML5 中文興趣小組 <public-html-ig-zh@w3.org>
(2013/10/25 21:52), John Hax wrote: > 1的方法是把img.src明确为最终显示的图片,也就是排除了同时设置srcset/src > 的case。也就是说如果手动设置了src,就覆盖了srcset的设置。除非你再 > img.src = null(当前规范未对这样应该执行的行为做出明确规定,浏览器一般 > 是忽略。但如果采取1,则取消对srcset的覆盖是比较合理的行为,且此行为与 > 浏览器当前行为是兼容的)。 当前规范们有对 "img.src = null" 对这样应该执行的行为做出明确规定,请参考 WebIDL 属性设值算法[1]与 ECMAScript 值转成 IDL DOMString 值的算法[2]。这 里的关键是 interface HTMLImageElement : HTMLElement { ... attribute DOMString src; ... } 的 attribute 前面有没有 [TreatNullAs=EmptyString] 标签。没有就是 null 会 被转成 "null"。 当然,有明确规定跟合不合实现或是合不合理是两回事,src 属性该不该有 [TreatNullAs=EmptyString] 也有争过[3]。目前是 规范 = 新 Firefox = IE ≠ 旧 Firefox = WebKit 的样子。 [1] http://www.w3.org/html/ig/zh/wiki/WebIDL#dfn-attribute-setter [2] http://dev.w3.org/2006/webapi/WebIDL/#dfn-convert-idl-to-ecmascript-value [3] https://www.w3.org/Bugs/Public/show_bug.cgi?id=21668 (2013/10/25 23:39), Kang-Hao (Kenny) Lu wrote: > HTML <img src=xxx srcset=xxx /> > + 不支持 srcset 的 JS 库 1 设置了 .src > + 支持 srcset 的 JS 库 2 设置了 .srcset > > 那这个时候 JS 库 2 会不起作用。支持 .srcset 的 JS 库的完整正确写法是 > > img.src = null;† > img.srcset = 新值; 所以这里的正确写法应该是 img.src = ""; img.srcset = 新值; 。不过我换个方向问,应该很多人都有注意到在 DOM 里 null 大多会变成 "null",img.src 的特别之处在哪? 话说,我感觉多了解 WebIDL 对很多人看规范都很有帮助,比如之前 [ArrayClass] 的讨论[4]或许我们应该优先翻译 WebIDL? [4] http://lists.w3.org/Archives/Public/public-html-ig-zh/2012Jun/thread#msg18 以上 Kenny -- Web Specialist, Opera Sphinx Team, Oupeng Browser, Beijing Try Sphinx: http://sphinx.oupeng.com/
Received on Friday, 25 October 2013 16:04:05 UTC