森の中に行くほど、党派的

それはすべて、私が長い間このプログラミング言語を見ていたJavascriptを勉強することにしたという事実から始まりました。 そしてついにそれが起こった! 私はフラナガンを読んだ(かなり良い本で、注目に値する)。



少し読んだ後、お気に入りのIDE-Visual Studio-いくつかの簡単な例を使用して練習することにしました。もっと面白いものが必要です。 ドラッグアンドドロップ。 IE6(!)の下で作成し、開始しました(テンプレートhtmページを自動的に生成するVisual Studioで作成しました)。 FireFox 3.5がアイテムのドラッグをきっぱりと拒否したときの驚きを想像してください。

取るに足らないものとならないように、コードを提供します。これは、多くフィッティングの去勢の結果として強く傷つけられました。

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html >

< head >

< title > Untitled Page </ title >

< style >

.dragme{position:relative;}

</ style >

</ head >

< body >



< script language ="JavaScript" >



var ie= document .all;

var nn6= document .getElementById&&! document .all;



var x,y;

var dobj;



function movemouse(e)

{

if (dobj)

{

dobj.style.left = nn6 ? tx + e.clientX - x : tx + event .clientX - x;

dobj.style.top = nn6 ? ty + e.clientY - y : ty + event .clientY - y;

return false ;

}

}



function selectmouse(e)

{

var fobj = nn6 ? e.target : event .srcElement;



if (fobj.className== "dragme" )

{



dobj = fobj;

tx = parseInt(dobj.style.left+0);

ty = parseInt(dobj.style.top+0);

x = nn6 ? e.clientX : event .clientX;

y = nn6 ? e.clientY : event .clientY;

document .onmousemove=movemouse;

dbg( 'x:' , x, ' tx:' , tx);

return false ;

}

}



document .onmousedown=selectmouse;

document .onmouseup= new Function( "dobj=null" );



</ script >



< div id ="testDiv" style ="background-color:Purple;width:50px;height:50px" class ="dragme" >

</ div >



</ body >

</ html >



* This source code was highlighted with Source Code Highlighter .








したがって、反対側から行かなければなりません。 手とdebazhのFirebug。

楽しい...コード内の何らかの理由で:

dobj.style.left = nn6? tx + e.clientX-x:tx + event.clientX-x;

dobj.style.top = nn6? ty + e.clientY-y:ty + event.clientY-y;





dobj.style.leftに値が設定されていません。

一般に、コードの外観が損なわれたために、掘削とコピー&ペーストの結果として、行がすべての原因であることが判明しました。

<!DOCTYPE html PUBLIC "-// W3C // DTD XHTML 1.0 Transitional // EN" " www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">



削除する価値があり、すべて正常に機能します。

ただし、利用可能な場合、ブラウザは「ほぼ標準モード」で動作するはずです(ほぼ標準に適合しています)。



これは何? Microsoftの陰謀またはFirefoxの党派(およびそれらのような他の人)。 残念ながら、わかりません。

理由は排除されますが、 の根源は明確ではありません

このトピックを誰かがこのような貴重な時間の節約に役立てることを願っています。



PS「必要な情報があれば、とても感謝します。」



UPD

@SilenITユーザーのおかげで答えが見つかりました。



むしろ、2番目。 FFの開発者は、マーケットシェアのために、quirksモードで、document.allなどの古いIEnew非標準機能を静かにサポートし、CSSで単位を指定せずにサイズと座標に「px」を自動的に追加しました。 これのおかげで、古代の湾曲したページは変更なしでその下で機能します。 しかし、通常のdoctypeが指定されている場合、ブラウザは作成者が自分が何をしていたかを知っていることを合理的に期待します... :)





リュージュ

彼ら自身が、FFは標準に従う必要があると書いています。 ディメンションにpxを追加してください:)




All Articles