@ aleemb: Я не верю, что это то, о чем он говорит. Я считаю, что проблема заключается в Ифраме, а не в комбинации перетаскиваемого и изменяемого размера.
@ regex: у меня та же проблема, и она также проявилась в предыдущей реализации с использованием прототипа инструментария.
Моя реализация использует Iframe в качестве основы для перетаскивания перетаскиваемых объектов. Чтобы увидеть ошибку, нужно слишком быстро двигать мышью, чтобы курсор покинул край перетаскиваемого DIV. DIV перестает двигаться, а ваша мышь продолжает работать; переместив мышь обратно на поверхность DIV, он снова поднимает DIV и начинает двигаться, даже если вы отпустили щелчок мыши.
Я подозреваю, что события Iframe каким-то образом мешают событиям jquery.
Мое решение состояло в том, чтобы разместить прозрачный тег DIV между Iframe и draggables / resizables.
Таким образом, iframe никогда не видит движения мыши и поэтому не мешает.
РЕДАКТИРОВАТЬ: см. Пример кода: http://dpaste.com/hold/17009/
Wes
UPDATE! Я вернулся к этой проблеме, и iframeFix, кажется, отлично работает во всех браузерах для draggables, но изменяемые размеры не имеют эквивалентного исправления.
Я использовал этот код, чтобы вручную добавить маску DIV:
$elements.resizable({ //mark it as resizable
containment: "#docCanvas",
start: function(event, ui) {
//add a mask over the Iframe to prevent IE from stealing mouse events
$j("#docCanvas").append("<div id=\"mask\" style=\"background-image:url(images/spacer.gif); position: absolute; z-index: 2; left: 0pt; top: 0pt; right: 0pt; bottom: 0pt;\"></div>");
},
stop: function(event, ui) {
//remove mask when dragging ends
$j("#mask").remove();
}
});
И HTML:
<div id="docCanvas" style="position: relative;">
<iframe src="something.html"></iframe>
</div>
spacer.gif - это прозрачный GIF размером 1x1 пикселей.
Это исправляет проблему для IE7 и IE8. IE6 имеет проблемы с z-index и не может понять, что DIV должен быть между IFrame и DIV с изменяемым размером. Я отказался от IE6.
Wes