javascript 文件输入 onchange 不起作用 [ios 仅限 safari]
javascript file input onchange not working [ios safari only]
下面的代码适用于除 safari mobile 之外的任何地方。
显然永远不会触发 onchange。
// create a hidden file input element
var input = document.createElement("input");
input.type = "file";
// when the input content changes, do something
input.onchange =
function(event)
{
// upload files
}
// Trigger file browser
input.click();
我发现了类似的示例,但它们都涉及甚至存在文件输入的某种其他可见表示形式的场景,并且它们都涉及表单清除解决方法。那在这里行不通。
单击图片时将调用此代码,以便上传新图片作为替换。
有什么提示吗?我做错了什么吗?
我会被诅咒:在 iOS safari 上,与其他浏览器相比,有两个额外的条件是必要的:
1) 输入必须实际附加到 DOM.
2) 设置 .onchange 无效:必须改用 addEventListener。
应该将输入元素附加到真正的 dom。
// create a hidden file input element
var input = document.createElement("input");
input.type = "file";
document.body.appendChild(input);
// when the input content changes, do something
input.onchange =
function(event)
{
// upload files
document.body.removeChild(input)
}
// Trigger file browser
input.click();
下面的代码适用于除 safari mobile 之外的任何地方。 显然永远不会触发 onchange。
// create a hidden file input element
var input = document.createElement("input");
input.type = "file";
// when the input content changes, do something
input.onchange =
function(event)
{
// upload files
}
// Trigger file browser
input.click();
我发现了类似的示例,但它们都涉及甚至存在文件输入的某种其他可见表示形式的场景,并且它们都涉及表单清除解决方法。那在这里行不通。
单击图片时将调用此代码,以便上传新图片作为替换。
有什么提示吗?我做错了什么吗?
我会被诅咒:在 iOS safari 上,与其他浏览器相比,有两个额外的条件是必要的:
1) 输入必须实际附加到 DOM.
2) 设置 .onchange 无效:必须改用 addEventListener。
应该将输入元素附加到真正的 dom。
// create a hidden file input element
var input = document.createElement("input");
input.type = "file";
document.body.appendChild(input);
// when the input content changes, do something
input.onchange =
function(event)
{
// upload files
document.body.removeChild(input)
}
// Trigger file browser
input.click();