Это старый, но так как я недавно боролся с ним, и в этом есть нечто большее, чем вы могли подумать, я вставил ответ. В качестве введения, чтобы узнать о нативных методах, обратитесь к этому сайту .
Это так далеко.Когда дело доходит до перемещения между окнами, все становится вонючим.Проблема заключается в том, что между браузерами нет большой последовательности.Откройте кучу разных браузеров, а затем откройте отличный пример .Выберите первый переключатель getData('Text')
и проверьте перетаскивание изображений.Первое, что вы заметите, это то, что в некоторых случаях getData ('Text') содержит URL-адрес, но не URL-адрес изображения.Итак, теперь выберите переключатель getData(e.dataTransfer.types[0]) based on detected content type
.В зависимости от того, какой браузер вы выберете, вы заметите, что некоторые типы содержат URL-адрес изображения, но у каждого браузера есть разные типы.На момент написания этой статьи некоторые браузеры (Internet Explorer) не имели типов, которые имеют URL-адрес изображения.Вот почему, если вы откроете изображения Google в Internet Explorer и попробуете этот поиск с помощью перетаскивания, ничего не произойдет - поле «drop here» не появится.
Итак, лучшее, что я придумал, - это (убедитесь, что вы ссылаетесь на эти ссылки выше, иначе вы не будете знать, о чем я): -
- Проверка
e.dataTransfer.files
.Если есть файлы, то все хорошо.Это скорее всего капля с локального компьютера.Если нет, перейдите к шагу 2. Выполните цикл по getData(e.dataTransfer.types[0])
и передайте URL регулярному выражению, которое проверяет строку, содержащую URL изображения.Что-то вроде:
RegExp( 'http://(.(?!http://))+?(?:[.]jpg|[.]jpeg|[.]png|[.]gif|[.]tiff|[.]ico)', 'gmi' )
Если вы найдете совпадение, тогда все хорошо.Делайте все, что хотите, например, переходите на сервер для получения изображения.Если нет, перейдите к шагу 3.
- Попробуйте
getData('Text')
.Если вы найдете совпадение, то хорошо.Перейдите на сервер и т. Д. Если нет, перейдите к шагу 4. - Вам не повезло.Покажите пользователю неподдерживаемое сообщение и попросите его предоставить изображение другим способом.