gpt4 book ai didi

javascript - 将图像拖放到 Chrome 中的 contenteditable 到光标处

转载 作者:搜寻专家 更新时间:2023-11-01 04:55:06 25 4
gpt4 key购买 nike

在 Firefox 中,如果我将图像从桌面拖到 contenteditable 字段中,它将作为 base64 嵌入到突出显示的光标位置。

JSFiddle:http://jsfiddle.net/zupa/YrwsS/

现在在 Chrome 中,图像由浏览器打开(页面加载,尝试使用相同的 fiddle )。

感谢 HTML5,您可以捕获拖放事件,并使用它捕获图像。但是,如果我停止浏览器的默认行为,我就会不知道用户想把它放在哪里。

你能建议一个解决方法吗?

最佳答案

如果您可以获得放置位置的坐标(我认为这一定是可能的),您可以按如下方式进行(未经测试)。我假设您已将放置位置相对于视口(viewport)的坐标作为变量 xy 并将放置的图像作为变量 img :

演示:http://jsfiddle.net/KZqNj/

代码:

var range;

// Try the standards-based way first
if (document.caretPositionFromPoint) {
var pos = document.caretPositionFromPoint(x, y);
range = document.createRange();
range.setStart(pos.offsetNode, pos.offset);
range.collapse();
range.insertNode(img);
}
// Next, the WebKit way
else if (document.caretRangeFromPoint) {
range = document.caretRangeFromPoint(x, y);
range.insertNode(img);
}
// Finally, the IE way
else if (document.body.createTextRange) {
range = document.body.createTextRange();
range.moveToPoint(x, y);
var spanId = "temp_" + ("" + Math.random()).slice(2);
range.pasteHTML('<span id="' + spanId + '">&nbsp;</span>');
var span = document.getElementById(spanId);
span.parentNode.replaceChild(img, span);
}

这将适用于最新的 WebKit、Opera 和 Mozilla 浏览器,尽管只有 Firefox 具有 document.caretPositionFromPoint() 的实现。

引用资料:

关于javascript - 将图像拖放到 Chrome 中的 contenteditable 到光标处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10654262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com