我正在尝试使用type =" file"的输入元素上传图片。然后使用以下代码将图像附加到contenteditable fieldset:
var doc = document;
function file_upload() {
var field = doc.getElementById("topic_details"), input = doc.body.appendChild(doc.createElement("input"));
input.id = "blob";
input.setAttribute("type", "file");
input.click();
input.addEventListener("change", function() {
//reader.onload = function(e) { doc.getElementById("topic_details").innerHTML = "<img style='max-width: 320px; height: auto;' src='"+e.target.result+"' alt='' />"; }
reader.onload = function(e) {
field.execCommand("insertImage", false, e.target.result);
}
reader.readAsDataURL(doc.getElementById("blob").files[0]);
input.parentNode.removeChild(input);
}, false);
}
但是我收到了这个错误:
未捕获的TypeError:field.execCommand不是函数
答案 0 :(得分:0)
首先execCommand()
是一个window
函数,只能在window
对象或其document
上调用,因此调用field.execCommand()
是错误的这就是错误背后的代码:
未捕获的TypeError:field.execCommand不是函数
在doc.getElementById()
函数中未定义doc
时,您调用file_upload
的另一件事,检查您是否在全局范围内声明doc
并且可以在file_upload
中访问document
{1}}功能。
注意:强>
请注意,声明一个指向document
对象的变量是没用的,因为它总是很容易通过window
访问它,并且它在m <- matrix(sample(1:20, 36, replace=TRUE), nrow=6)
m[lower.tri(m)] <- t(m)[lower.tri(m)]
m
# [,1] [,2] [,3] [,4] [,5] [,6]
# [1,] 19 20 15 6 5 14
# [2,] 20 20 20 3 18 17
# [3,] 15 20 6 5 11 3
# [4,] 6 3 5 6 9 20
# [5,] 5 18 11 9 10 2
# [6,] 14 17 3 20 2 7
范围内全局定义。
答案 1 :(得分:0)
我找到了解决方案:
function file_upload() {
var field = doc.getElementById("topic_details"), input = doc.body.appendChild(doc.createElement("input"));
input.id = "blob";
input.setAttribute("type", "file");
input.click();
input.addEventListener("change", function() {
reader.onload = function(e) {
var range = doc.createRange();
range.selectNodeContents(field);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
doc.execCommand("insertImage", false, e.target.result);
}
reader.readAsDataURL(doc.getElementById("blob").files[0]);
input.parentNode.removeChild(input);
}, false);
}
谢谢大家的帮助.. cya
答案 2 :(得分:0)
我在测试调用document.execCommand('copy')命令的函数时遇到了相同的错误 测试document.execCommand时对我有什么帮助:
我在test.spec.ts文件顶部添加了这行代码
document.execCommand = jest.fn()
使用角度9