Мне нужно реализовать функции перетаскивания в веб-приложении между элементами, присутствующими на веб-странице, и элементами внутри iframe (прежде чем вы будете жаловаться на iframe, мне НУЖНО это по техническим причинам, это не вариант).
У меня есть элементы на странице, которые можно перетаскивать в целевые сбрасываемые элементы внутри iframe.
Мне удалось сделать это как с jQuery UI, так и с YUI, хотя обе библиотеки представляют одну и ту же проблему: координаты целевого элемента (отбрасываемой цели) неверно истолкованы, область отбрасывания, рассматриваемая обеими библиотеками, неверна и не представляет фактический сбрасываемый объект, следовательно, столкновения между перетаскиваемым объектом и отброшенным элементом полностью перепутаны.Это похоже на то, что библиотека видит сбрасываемый элемент, расположенный в другом месте, откуда он фактически находится.
Я думаю, это связано с тем, что iframe располагается не в верхнем левом углу страницы, а в середине.Я думаю, что это потому, что я читал много людей, жалующихся на эту проблему, и проблема исчезла, если фрейм был расположен в верхнем левом углу.Кто-то предполагает, что координаты отбрасываемого элемента могут быть рассчитаны на основе screenX и screenY, а не clientX и clientY, и это может быть причиной проблемы, не принимая во внимание, что элементы находятся внутри iframe, и поэтому координаты различаютсямежду другими элементами за пределами iframe.
Итак, поскольку, кажется, нет способа исправить это напрямую, используя библиотечные функции, и у меня действительно нет времени, чтобы попробовать все доступные библиотеки, я думаю,об устранении проблемы путем изменения (исправления) внутренних функций рассматриваемой библиотеки.
Вопросы:
1) Кто-то испытывал такое поведение раньше, иудалось решить проблему?Или есть библиотека, которая способна сделать это без нареканий?
2) Есть ли способ решить эту проблему, используя методы и функциональные возможности самой библиотеки?А если нет, то
3) Кто-нибудь знает, какая часть библиотеки рассчитывает координаты области сбрасывания, чтобы я мог исправить это как последний крайний вариант?
Заранее спасибо, дажеМы будем благодарны за помощь!
РЕДАКТИРОВАТЬ
Эта скрипка демонстрирует проблему.Попробуйте переместить зеленый квадрат внутри красного квадрата (который находится внутри фрейма).Вы заметите, что столкновение между двумя квадратами неверно.
http://jsfiddle.net/DQdZ9/23/