src 与 srcset(或是 src-N)的 JS 交互

除了 <picure> 提案以外,srcset 或是 src-N 里面,我觉得最有疑义的都是这个
这个问题:

  对

    <img src="image.png" srcset="image-HD.png 2x" />

  运行

    img.src = "newimage.png";

之后,<img> 应该改变成什么?

  1) <img src="newimage.png" srcset="image-HD.png 2x" />
  2) <img src="newimage.png" />

我比较倾向 2) 一点。一来,我不觉得有人会想产生 1) 这样的结果,二来我觉得
比较重要的理由是:有可能写 HTML 的人不会去管 JS,擅自在页面里会被 JS 操
作的 <img> 元素加上 srcset 属性,但是没去处理 JS 里的 .src 的代码,这样
就会造成脚本换不了图片的问题(参见测试案例[1])。

另外,假如脚本换的新 <img> 没有高清的版本,代码里就需要出现

  img.srcset = "";

这种不自然的代码。

当前 WebKit/Blink 是实现 1),规范也是这样写的。大家怎么想呢?


这个是写入 .src 的问题,读取 .src 这个也有人提议[2]是不是应该读出选择到
的 URL,这个我是觉得合理,不过看起来不急迫了些。相对来讲,上面的问题不知
道会不会产生严重的兼容问题,毕竟现在的 polyfill 都是操作 .src,可能没人
注意到 @srcset 会屏蔽掉 @src 的问题。


[1] http://jsbin.com/OVUQoXO/3/edit
[2] http://lists.w3.org/Archives/Public/public-respimg/2012Nov/thread#msg18


以上

Kenny
-- 
Web Specialist, Opera Sphinx Team, Oupeng Browser, Beijing
Try Sphinx: http://sphinx.oupeng.com/

Received on Wednesday, 23 October 2013 04:02:39 UTC