contenteditable可编辑div插入图片

可编辑div也就是常说的富文本编辑器,自己手动做一个富文本编辑器。需要设置div的可编辑属性contenteditable="true"

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>富文本上传图片</title>
    <style>
        #editor{
            border: 1px solid #ccc; 
            width: 400px;
            height: 200px;
            margin-bottom: 30px;
        }
        #editor img{
            /* 需要图片换行的话,可以设置display:block; */
            display: block;
            max-width: 100px;
        }
    </style>
</head>
<body>
    <div id="editor" contenteditable="true">
        123456123456
    </div>
    <input type="file" name="file" id="uploadFile" onchange="uploadFile(event)"/>    
</body>
<script type="text/javascript" language="javascript">
    var editer = document.getElementById('editer');
    function uploadFile(e){
        let file = e.target.files[0]; //需要上传到后台的图片
        //上传后台,此处省略。。。。。。。。。。。
        let filePath = 'http://qiniu.jnwtv.com/LC20180417174434604455636.jpg';
        //filePath为后台返回的图片地址
        editer.focus();
        document.execCommand('InsertImage', false, filePath);
    }
</script>
</html>

更多富文本操作请参考官方文档:

https://developer.mozilla.org/zh-CN/docs/Web/API/Document/execCommand

在HTML中,`contenteditable`属性允许元素的内容被用户直接编辑。然而,由于其设计初衷主要是文本输入,原生情况下并不支持直接插入图片。要实现这个功能,通常需要借助JavaScript来扩展编辑区域的功能。 以下是一个简单的示例,利用JavaScript的`insertAdjacentHTML()`方法和`FileReader` API来实现: ```html <!DOCTYPE html> <html lang="en"> <head> <style> .editable-image { border: 1px solid black; padding: 10px; resize: none; } </style> </head> <body> <div contenteditable="true" class="editable-image" id="myEditableArea"></div> <!-- 插入图片按钮 --> <button onclick="insertImage()">Insert Image</button> <script> function insertImage() { document.getElementById('myEditableArea').addEventListener('paste', handlePaste); // 当用户粘贴时触发 function handlePaste(e) { e.preventDefault(); // 阻止浏览器默认行为(防止覆盖已存在的图片) var files = (e.clipboardData || window.clipboardData).items; if (!files || !files.length) return; var file = files[0].getAsFile(); if (!file) return; var reader = new FileReader(); reader.onload = function (event) { var imgHTML = `<img src="${event.target.result}" alt="Uploaded image">`; document.execCommand('insertHTML', false, imgHTML); // 插入HTML }; reader.readAsDataURL(file); } } </script> </body> </html> ``` 在这个例子中,当点击“Insert Image”按钮后,会监听`paste`事件。如果用户从剪贴板粘贴图片,它会被读取并转换为Base64格式的URL,然后插入到可编辑区域中。 请注意,这只是一个基本的示例,实际应用可能需要考虑更多情况,如错误处理、用户选择文件的方式(可能是通过文件选择器而非粘贴)、以及兼容性问题等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值