在网页上我有一个javascript函数,它添加了一个具有以下层次结构的div:
<div style="display:inline-block;overflow:hidden;">
<label for="myInput" style="display: inline-block; max-width: 300px;">
<button disabled style="pointer-events:none;" >Browse to file</button>
<p style="display:inline">ends up being file name</p>
<img/>
<input id="myInput" type="file" style="width:0px;"/>
</label>
</div>
这个想法是点击标签中的任何内容都会触发文件输入,除了IE8之外,这种方法都很有效。
在IE8中,动态创建标签不会触发文件输入,我注意到如果我将动态创建的标签的'for'属性更改为指向未动态创建的文件输入,则它可以正常工作。 / p>
标签出现无法找到动态创建的文件输入。
问题: - 如何让标签看到动态创建的文件输入? - 有没有办法刷新DOM以允许标签看到文件输入?
注意:如果使用IE11的仿真模式进行测试,它可以正常工作,但在真正的IE8浏览器中它不会
答案 0 :(得分:0)
我不知道为什么,但是当您使用label
填充.innerHTML
元素时,IE8似乎启用了预期的行为。可能有其他更好的黑客可以避免HTML操作,但这应该足以作为一个止拍。