3

でサポートするドラッグ アンド ドロップ API をテストしています

    if (!Modernizr.draganddrop) {
    alert('No!');
}
else { 
    alert('Yes');
     } 

しかし、どういうわけかIE8では「はい」と表示されます.IE8はもちろんhtml5 D&D APIをサポートしていません。

前もって感謝します

4

1 に答える 1

8

他のいくつかの場所を読むと、これはかなり一般的な問題のようです。

問題は、ブラウザのコンテキストでの「ドラッグ アンド ドロップ」にはさまざまな意味があるということです。

実際、IE8 でサポートされている一連のドラッグ アンド ドロップ イベント ハンドラーがあり(実際には IE5 までさかのぼります)、これはおそらく Modernizr がこのテストで正しいと報告しているものです。HTML5 標準は基本的に IE がすでに行っていたことを形式化したため、古いバージョンの IE でも新しいブラウザーでも同じイベントです。参照: Quirksmode (汚い言葉ですみません! 彼はどうやらドラッグ アンド ドロップ API が気に入らないようです。しかし重要なことは、彼が明確に言っていることです: ドラッグ アンド ドロップは古いバージョンの IE に存在し、実際には Microsoft が発明したものです)

ただし、これらのドラッグ アンド ドロップ イベントは全体像ではありません。ブラウザ ウィンドウの外からファイルをドラッグし、ブラウザにドロップするという概念もあります。これはまったく別のドラッグ アンド ドロップ アクションであり、より新しい機能です。正確に検出できないため、現在、Modernizr の「Undetectables」ページにリストされています。

私が知っている最も近い検出方法は、次のように、Modernizr のドラッグ アンド ドロップ チェックと FileReader API の二次チェックを組み合わせることです。

if (!!window.FileReader && Modernizr.draganddrop) {
    ....
}

ただし、この手法を使用すると Safari で偽陰性が発生するという報告も読んでいるので、多少は考慮してください。

参照:

必ずしも解決策が明確になるとは限りませんが、説明に役立つことを願っています。

于 2012-10-01T20:22:39.020 に答える