Интересно, я не знаю интерфейса перетаскивания достаточно хорошо, чтобы быть уверенным, но похоже, что здесь есть какая-то ошибка. Я немного изменил ваш код, чтобы добавить обработчик для события drop в редактируемом div:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ContentEditable</title>
</head>
<body>
<div contenteditable="true" ondrop="window.alert('dropped!');return false;">This is editable content</div>
<span>This is not editable content</span>
<span>
<img src="bookmark.png" title="Click to do foo" onclick="foo()">
</span>
</body>
</html>
Я тестирую в Firefox 3.7 alpha: если я перетаскиваю изображение в середину текста, событие запускается, я получаю предупреждение, и return false
останавливает удаление изображения. Однако, если я перетаскиваю в начало текста, событие не запускается, но изображение вставляется в div. Имейте в виду, что в Firefox 3.6 и Chromium 6.0 событие вообще не срабатывает, поэтому я либо совершенно не понял, как оно работает, либо ни одно из них не работает достаточно хорошо, чтобы на него можно было положиться.