var x = event.target||event.srcElement;
document.getElementById(x.id).style.left = 200 + "px" ;
document.getElementById(x.id).style.top = 100 + "px" ;
Google chrome and IEですが、Firefoxでは機能しません。googleで試してみました。googleはevent.srcElement(works on IEしかし、Firefoxではありません)event.targetを追加しましたが、まだ機能していません。Firefoxで機能するために必要な変更はもうありますか?ところで、Firefoxの3.5バージョンを使用しています。
function up()
{
dragok = false;
document.onmousemove = null;
var x = event.target||event.srcElement;
document.getElementById(x.id).style.left= 200 + "px" ;
document.getElementById(x.id).style.top= 100 + "px" ;
}
Firefoxで動作するように私を助けてください
ハンドラーの仮パラメーターとしてevent
を定義してください。
IE
はグローバルに定義し、Chrome
は両方の場所で定義するため、どちらの方法でも機能しますが、Firefox
は関数パラメーターとしてのみ定義します。
function up( e ) {
// ^-----------------------------------------------------+
if( !e ) e = window.event; // <---needed this --- and this ->--+
dragok = false;
document.onmousemove = null;
var x = e.target||e.srcElement; // <--- and these
document.getElementById(x.id).style.left= 200 + "px" ;
document.getElementById(x.id).style.top= 100 + "px" ;
}
Jqueryを使用して問題を解決しました。たとえば、使用できる要素のIDを取得するには:
var x = $(this).attr('id');
このソリューションは、Firefoxブラウザーでも機能します。 keydown
アクションを開始すると、event
プロパティがこのようにグローバル変数に設定されます。
var keyEvent=null;
そのevent
プロパティをkeyEvent
に割り当て、.item
はターゲット要素です。
$(document).on("keydown",'.item', function(e){
keyEvent=e;
},this))
次に、コードでkeyEvent
を使用します。
function up( e ) {
if( !e ) e = keyEvent;
dragok = false;
document.onmousemove = null;
var x = e.target||e.srcElement;
document.getElementById(x.id).style.left= 200 + "px" ;
document.getElementById(x.id).style.top= 100 + "px" ;
}
注:event
プロパティをwindow
のグローバル変数に設定しないでください。