でサポートするドラッグ アンド ドロップ API をテストしています
if (!Modernizr.draganddrop) {
alert('No!');
}
else {
alert('Yes');
}
しかし、どういうわけかIE8では「はい」と表示されます.IE8はもちろんhtml5 D&D APIをサポートしていません。
前もって感謝します
でサポートするドラッグ アンド ドロップ API をテストしています
if (!Modernizr.draganddrop) {
alert('No!');
}
else {
alert('Yes');
}
しかし、どういうわけかIE8では「はい」と表示されます.IE8はもちろんhtml5 D&D APIをサポートしていません。
前もって感謝します
他のいくつかの場所を読むと、これはかなり一般的な問題のようです。
問題は、ブラウザのコンテキストでの「ドラッグ アンド ドロップ」にはさまざまな意味があるということです。
実際、IE8 でサポートされている一連のドラッグ アンド ドロップ イベント ハンドラーがあり(実際には IE5 までさかのぼります)、これはおそらく Modernizr がこのテストで正しいと報告しているものです。HTML5 標準は基本的に IE がすでに行っていたことを形式化したため、古いバージョンの IE でも新しいブラウザーでも同じイベントです。参照: Quirksmode (汚い言葉ですみません! 彼はどうやらドラッグ アンド ドロップ API が気に入らないようです。しかし重要なことは、彼が明確に言っていることです: ドラッグ アンド ドロップは古いバージョンの IE に存在し、実際には Microsoft が発明したものです)
ただし、これらのドラッグ アンド ドロップ イベントは全体像ではありません。ブラウザ ウィンドウの外からファイルをドラッグし、ブラウザにドロップするという概念もあります。これはまったく別のドラッグ アンド ドロップ アクションであり、より新しい機能です。正確に検出できないため、現在、Modernizr の「Undetectables」ページにリストされています。
私が知っている最も近い検出方法は、次のように、Modernizr のドラッグ アンド ドロップ チェックと FileReader API の二次チェックを組み合わせることです。
if (!!window.FileReader && Modernizr.draganddrop) {
....
}
ただし、この手法を使用すると Safari で偽陰性が発生するという報告も読んでいるので、多少は考慮してください。
参照:
必ずしも解決策が明確になるとは限りませんが、説明に役立つことを願っています。