gpt4 book ai didi

javascript - 只允许在 contentEditable
内移动

转载 作者:行者123 更新时间:2023-12-02 20:26:20 30 4
gpt4 key购买 nike

我正在努力使用标记为 contentEditablediv 来实现我想要的行为。我希望允许用户在 div 内移动 img 并使其保持内联,但不允许他们调整大小或以其他方式修改该 img。否则他们应该能够修改 div 中的文本。

默认的浏览器行为如下所示,img 可以通过拖动 handle 进行移动和调整大小:

<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js"></script>
</head>
<body>

<div id="edit" contenteditable="true">
Here is some text, and also an <img src="http://img841.imageshack.us/img841/1747/imagead.png" /> image
</div>

</body>
</html>

我一直在尝试使用各种客户端脚本来尝试实现所需的功能,但我尝试的每种组合似乎都会遇到困难。我可以实现的是最终锁定:

<script type="text/javascript">
$(document).ready(function() {
$('img', '#edit').each(function (i, item) {
item.contentEditable = false;
$(item).bind('mousedown', function (e) {
e.preventDefault();
});
if ($.browser.msie) {
item.oncontrolselect = function () { return false; }
}
});
});
</script>

但是,尽管这可以防止任何元素重复(我在 Firefox 中遇到的问题)和使用拖动 handle 调整大小(在 IE 中),但根本无法移动 img

更新:谢谢你们,到目前为止我得到的最接近的是:

<script type="text/javascript">
$(document).ready(function() {
$('img', '#edit').each(function (i, item) {
attachEvents(item);
});

if ($.browser.mozilla) {
document.execCommand("enableObjectResizing", false, false);
}
});

function attachEvents(item) {
if ($.browser.msie) {
item.attachEvent('onresizestart', function (e) {
e.returnValue = false;
}, false);
item.attachEvent('ondragend', function (e) {
// cannot get IE to rebind moved item (toElement or similar is not available until IE9 when using addEventListener)
attachEvents(e.srcElement);
}, false);
}
if ($.browser.opera) {
// doesn't seem to work at all in Opera 11
}
}
</script>

但剩下的两个问题是 Opera 完全缺乏支持(这是我可以忍受的)以及如何在 IE 中重新绑定(bind)事件 ondragend 的问题。

还有其他人可以帮忙吗?

最佳答案

您可以使用 JQuery ui 实现可拖动效果关于你的img

关于javascript - 只允许在 contentEditable <div> 内移动 <img>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4795132/

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