Старые ОС и событие «DragOver» не запускаются, пока фокус не покинет браузер - PullRequest
0 голосов
/ 09 января 2012

Инсайт

Я занимался добавлением поддержки перетаскивания файлов HTML5 на сайт, где я делаю div, чтобы уведомить пользователя, что он может перетаскивать файлы туда, когда файлы перетаскиваются в определенный контейнер. Все шло отлично и прекрасно работало дома, сегодня утром я вхожу на работу, и вдруг все работает не так.

Проблема

Событие Javascript dragover, похоже, не срабатывает в старых операционных системах до 1.) Вы отпускаете кнопку мыши, либо в исходном месте файлов, либо на странице; или 2.) При наведении курсора мыши за пределы браузера.

Я создал это демо jsFiddle, демонстрирующее проблему: http://jsfiddle.net/q4Evq/

Мой домашний компьютер работает под управлением Windows 7, и приведенная выше демонстрация работает нормально, как только вы перетаскиваете файл или что-либо поверх элемента div, фон мгновенно становится красным. На моем компьютере, работающем под управлением Windows XP, фон не станет красным, пока я не перетащу его из окна div и за его пределы.

Это, похоже, не зависит от браузера, так как я пробовал IE8, Firefox 9, Chrome 17 на компьютере с Windows XP и IE9, Firefox 9 и Chrome 16 на компьютере с Windows 7, и результат одинаков для всех из них в том, что он работает на 7, но не XP.

Мой вопрос касается того, эта проблема только что затронула меня и мой компьютер, на котором я сейчас работаю, или у всех работает Windows XP? Это работает в Vista? Что-то не так с моим JavaScript или другим способом заставить эту функцию работать?

1 Ответ

0 голосов
/ 12 января 2012

У меня такая же проблема, я действительно злюсь. Я написал html-файл с javascript, простой графической подсветкой при событии dragover на div.

Все прошло хорошо на моих 2 ПК, оба Win XP SP3 и полностью исправлены. Несколько дней назад я, должно быть, что-то изменил, не спрашивайте что. Может быть, я не ел свой обед. С тех пор я получил точно такое же затмение, как вы описали на одном компьютере.

Одна вещь, которую я понял о моем больном цифровом слуге: Если перетаскивание начинается внутри браузера, происходит событие перетаскивания, как будто ничего не произошло. Образец: http://help.dottoro.com/external/examples/ljrkqflw/ondragover_1.htm

Я подумал о проблеме делегирования с рабочего стола на браузер или о проблеме с двумя экранами. Я имел дело с DCOMCnfg и создал «Интерактивный» доступ к COM-безопасности, но это не помогло. Другими вещами было пристальное внимание к драйверам или неполное удаление IE7, но я уверен, что все прошло хорошо 10 дней назад, так что забудьте о таких проблемах за месяц. Было подозрение, что что-то не так с производительностью, но Procmon и TaskManager не показывают ничего необычного. Я даже попробовал бета-версию FF10, и теперь я очень устал. Если я продолжу тестирование, как лабораторная крыса, я непреднамеренно убью свою ОС.

Пусть наш клуб будет расти как можно быстрее, иначе это может занять некоторое время. Я надеюсь, что есть кто-то с опытом, который скоро рассмеется и намекнет.

...