3

さまざまなグラフィック要素で構成されるポップアップを持つ Chrome / Firefox の拡張機能を開発しています。ユーザーがこのポップアップからこれらのアイテムをドラッグ アンド ドロップしないようにします。Chrome でドラッグを無効にするには、次の CSS コードを使用できます。

* {
    user-drag: none;
    -ms-user-drag: none;
    -moz-user-drag: none;
    -webkit-user-drag: none;

    user-select: none;
    -ms-user-select: none;
    -moz-user-select: none;
    -webkit-user-select: none;

    text-decoration: none;
}

しかし、これは Firefox では機能しません。この場合に機能する css 属性はありますか?

最小バージョンは次のとおりです: https://drive.google.com/open?id=0B4k6nM18722gNjY5VjVpREhpRTQ

4

1 に答える 1

5

ブルート フォースによるドラッグを無効にします。

ポップアップ/ドキュメント全体でドラッグを無効にするには、次のいずれかを実行できます。

  • 次の行をpopup.jsファイルに追加します。
function noDrag(event) {
    event.preventDefault();
}
document.addEventListener('dragstart',noDrag,true);
  • または、次の行をpopup.jsに追加します。
document.addEventListener('dragstart',function(event){event.preventDefault();},true);
  • または、 popup.html<html>の行を次のように変更します。
<html ondragstart='event.preventDefault();'>

私の個人的な好みは、名前noDrag付き関数を使用することです。クロージャーの代わりに名前付き関数を使用したのは、単に将来のある時点で、どの要素のドラッグを無効にするかを選択したいからです。名前を付けると、同じ関数を再利用したり、必要に応じて要素からリスナーとして削除したりできます。HTML の代わりに JavaScript を使用するのは、A) ポップアップ用の JavaSctipt ファイルが既にあり、B)onxxxxxイベントの属性/プロパティに関する私の意見では、妥当な場合は避けるべきであるからです。このポップアップに関連付けられた JavaScript ファイルがまだない場合は、HTMLondragstartメソッドを使用します。

どのように動作するはずですか:

<a>以下は、 and<img>要素のドラッグを無効にしません。仕様とドキュメントによると、ドラッグを無効にするために機能するはずです。Firefox のソース コードをさらに掘り下げて、動作しない理由を突き止める必要があります。

Firefox (および HTML 仕様) では、ドラッグ可能な要素は draggable属性によって制御されます。画像とリンクの場合、デフォルト値は ですtrue。それ以外の場合、デフォルトは ですfalsedraggable="false"HTML 内のそのようなすべての要素を使用するsetAttribute('draggable',false)か、そのようなすべての要素に対して JavaScript を使用する必要がありelement.draggable = false;ます。

Firefox には、要素がドラッグ可能かどうかを制御するために使用できる CSS プロパティがありません。

詳細については、次を参照してください。

于 2016-08-12T02:22:19.173 に答える