HTML中的IMG元素:文件属性和SRC属性的行为不同



i具有保存在某个<img id = "one">元素上的file属性。上述file属性包含File类型的对象。我有<img id = "two">元素的羚羊。当我尝试一下时:

document.getElementById('two').src = document.getElementById('one').file

它的行为不同:

document.getElementById('two').file = document.getElementById('one').file

第一行代码返回img one中包含的Filestring表示,第二行代码返回实际File对象。这种行为差异是什么?

HTMLImageElement s没有file属性,因此,当您分配document.getElementById('two').file时,您只是在代表<img id="two">的JavaScript对象上创建file属性。访问该属性,然后您返回您放入的File

但是document.getElementById('two').src是一个IDL属性,它反映了img元素的src内容属性。src内容属性包含图像的地址,因此,当您从JavaScript访问src IDL属性时,您将文件转换为字符串:

2.7.1反映IDL属性中的内容属性

某些IDL属性被定义为反映特定的内容属性。这意味着在获取时,IDL属性返回内容属性的当前值,并且在设置时,IDL属性将内容属性的值更改为给定值。

[...]

如果反射IDL属性是一个USVString属性,其内容属性被定义为包含URL,则在获取内容属性时,如果没有内容属性,则IDL属性必须返回空字符串。否则,IDL属性必须分析相对于元素节点文档的内容属性的值,如果成功的话,请返回所得的URL字符串。如果解析失败,则必须返回内容属性的值,然后转换为USVString。

如果要使用文件,请使用 <input type="file">,否则不能将"文件"放入 <img> tag

相关内容

  • 没有找到相关文章

最新更新