javascript - 在插入符号位置的 iframe 中插入图像
问题描述
对于富文本框。我想在插入符号的位置插入用户选择的图片。
首先,我尝试过:
var loadImage = function(event) {
var editor = editFrame.document;
editor.execCommand("insertImage", false, event.target.files[0] );
};
我只得到一个断开的链接图标,但在我的 iframe 中的当前位置。没有图像。然后我被告知尝试这样做:
var loadImage = function(event) {
var editor = document.getElementById('editFrame');
editor.src = URL.createObjectURL(event.target.files[0]);
};
这不是我想要做的,但在这种情况下,我没有链接断开问题并且图像正常加载。
我怎样才能获得两个世界中最好的?:)
有人可以解释一下如何在预期的地方加载图像吗?在插入符号位置?我读了一些东西,但作为一个初学者,这一切都让我很困惑。
请只使用javascript?我的意思是@David Bray 提供的解决方案效果很好。但它使用 JQuery,我不知道它在做什么......或者有人可以将 JQuery 翻译成 Javascript 吗?
解决方案
这是 David Bray 脚本的纯 JavaScript 版本,并进行了各种其他更改。它与他的答案足够接近,可以认为它只是一个不同的版本,但又太不同了,不能只编辑原始答案。另一个亮点是我在加载图像后将输入元素值设置为空。如果您不这样做并且删除了图像,它将不允许您重新加载它。
const imgInp = document.getElementById('imgInp');
imgInp.onchange = function() {
if (imgInp.files && imgInp.files[0]) {
const reader = new FileReader();
reader.onload = function(event) {
// Works without the below focus, but you may need it if you modify it.
document.getElementById('doc').focus();
document.execCommand('insertImage', false, event.target.result);
imgInp.value = "";
}
reader.readAsDataURL(imgInp.files[0]);
}
}
推荐阅读
- javascript - 保持下拉角度的选定值从一个组件到另一个组件 Angular
- c++ - 使用 shared_pointer 作为实例变量将 void* 指针转换回
- mongodb - Vue.JS 拖放
- laravel - 如何延迟 Laravel 作业队列
- angular - 仅从特定组件打开 mat-menu 时如何降低整个背景页面的不透明度?
- reactjs - 如何将 react-redux 与下一个 js 和类组件一起使用
- azure-ad-b2c - Blazor WASM B2C - AccessTokenNotAvailableException 上的重定向
- javascript - 无法加载资源:net::ERR_INSUFFICIENT_RESOURCES 与循环 ajax 查询
- excel - 不使用导入方法将问题插入 pg admin
- flutter - dart/flutter - 在 gridview 中向下显示双倍的列表条目