6

)私はウィンドウのサイズを変更するコントロールとしてウィンドウをリサイズするウィンドウをサイズ変更するために使用しているため、imgエレメントを選択不可と取り消し可能にします。.addEventListener( "dragstart"

それは次のように完全に正常に動作します:

noSelect[x].ondragstart = function() {return false}; 

しかし、これは、すべてのHTMLElement周りXPCNativeWrapperのを使用してのFirefox(3.6。*)拡張子で使用されるので、私は「.onsdragstart」を使用してにすることはできません".addEventListener"を使用してください。

問題は、上記のコードが動作していないことに相当します。クリックしてIMGをドラッグするには、代わりに次の私のウィンドウのサイズを変更すると、Firefoxのデフォルトの画像のドラッグをトリガー:

noSelect[x].addEventListener("dragstart", function() {return false}, false) 

は等価ではない上に引用された2行のコードはありますか?選択不可能なオブジェクトのための

全コンテキスト:

var noSelect = document.getElementsByClassName("noSelect") 
    for (x in noSelect) { 
     if (x == "length") 
      break 
     noSelect[x].unselectable = "on"; 
     noSelect[x].onselectstart = function(){return false}; 
     noSelect[x].ondragstart = function() {return false}; 
     noSelect[x].style.userSelect = "none"; // w3c standard 
     noSelect[x].style.MozUserSelect = "none"; // Firefox 
    } 

答えて

1
  1. ondragstartはIEのみのイベント、それが Firefoxで発射されていない理由です です。 UPDATE:それはこれよりも複雑ですが、ここで続きを読む:Javascript ondrag, ondragstart, ondragend
  2. をondragstartはFFで利用できたならば、あなたは x.ondragstart = ...でそれをキャッチすることができ、それはあまりにもFF で動作します。
  3. addEventListenerは、イベントハンドラを割り当てるより良い方法です。 は、イベントに対して複数のハンドラを要素に添付することができます。 IEには attachEventという名前のソフトウェアがあります。

について:IE以外のブラウザでは、オブジェクトを選択できないようにするには、onmousedownイベントをキャッチしてデフォルトの動作を防止する必要があります。

+0

1.両方のケースでイベントが発生しません。私はその機能に警告を発し、それが始動する。 2. http://help.dottoro.com/ljpncnwi.phpによると、ondragstartはFFで入手できます。しかし、XDCNativeWrapperのためにx.ondragstart =を使用することはできません。 3. addEventListenerがちょっと面白いのであれば、 ".addragListener"を ".addEventListener"に置き換えて別の動作を表示するのはなぜですか?それはまだ起動しますが、FFのデフォルトのドラッグをオーバーライドしません.ondragstartのように。 – TinyTimZamboni

+0

デフォルトの動作はキャッチするmousedownで停止することができます – kapa

1

私はなぜfunction() { return false; }が動作しないのか分かりませんが、function(event) { event.preventDefault(); }がFirefoxで動作することはわかります。

5

addEventListenerは、特別な戻りコード処理を持たないEventListenerを登録します。

は、定期的なイベントリスナーの中で最もon*イベントハンドラcancels the event per the HTML spec、これはニールは彼の答えで述べたようにevent.preventDefault()を呼び出すことによって達成されるから、falseを返します。

+0

これは私が受け入れたい回答ですが、このプロジェクトはしばらく前から行われていました。 – TinyTimZamboni

関連する問題