2017-11-23 9 views
0

これは小さな質問かもしれません。しかし、私はこれの理由を見つけることができませんでした。私はそれをドラッグしてdivの位置を変更するためのスクリプトを作った。コードはクロムブラウザで正常に動作しています。 Firefox上でテストしようとすると動作しません。Chromeでのみ動作するJavaScriptスクリプトで、Firefoxでは動作しません。 (divをドラッグするスクリプト)

var h = window.innerHeight|| document.documentElement.clientHeight || document.body.clientHeight; 
 
     window.onload = function() { 
 
// ------------------lock the div with mouse pointer-------------- 
 

 

 
// variable dragged is for identified that you are click on the button or not 
 
var dragged = false, 
 
y = 0,pointerDis = 0, 
 
boxElement = document.getElementById('drag'), 
 
drgElement = document.getElementById('titl'); 
 
      if (boxElement) { 
 
// -----------------check whether the title div is holding by the mouse to lock it with mouse------- 
 
\t drgElement.addEventListener('mousedown', function() { 
 
\t  dragged = true; 
 
     pointerDis = event.clientY - parseInt(window.getComputedStyle(boxElement, null).getPropertyValue("top")); 
 

 
}); 
 
//------------------check whether the title div is released to drop the div------------------------- 
 
\t document.addEventListener('mouseup', function() { 
 
\t dragged = false; 
 
}); 
 
    document.addEventListener('mousemove', function() { 
 
     y = event.clientY; 
 
    \t if(dragged == true) 
 
    \t { 
 
      y = y -pointerDis; 
 
      if(y<0) 
 
      { 
 
       y = 0; 
 
      } 
 
      else if(y > window.innerHeight - boxElement.offsetHeight) 
 
      { 
 
       y = window.innerHeight - boxElement.offsetHeight; 
 
      } 
 
    \t \t boxElement.style.top = y + 'px'; 
 
    \t } 
 
    }); 
 
} 
 
};
.drg { 
 
\t \t \t position: absolute; 
 
\t \t \t top:0; 
 
\t \t \t right: 0; 
 
\t \t \t background: red; 
 
\t \t \t border-top-left-radius: 45px; 
 
\t \t \t border-bottom-left-radius: 45px; 
 
\t \t } 
 
\t \t #titl{ 
 
\t \t \t background: blue; 
 
\t \t \t width: 50px; 
 
\t \t \t text-align: center; 
 
\t \t \t color: white; 
 
\t \t \t font-size: 30px; 
 
\t \t \t border-top-left-radius: 10px; 
 
\t \t } 
 
\t \t #det{ 
 
\t \t \t background: #f9c500; 
 
\t \t \t width: 50px; 
 
\t \t \t border-bottom-left-radius: 10px; 
 
\t \t \t text-align: center; 
 
\t \t }
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
\t <title>test 4</title> 
 
</head> 
 
<body> 
 
<div class = "drg" id="drag"> 
 
\t <div id="titl" unselectable="on" onselectstart="return false;">....</div> 
 
\t <div id="det">this is the details menu</div> 
 
</div> 
 
</body> 
 
</html>

あなたは青のdivからクリックとドラッグでY軸を通してそれをドラッグすることができます。私はその理由を知らないか、Firefox上でこの作業を修正する方法を見つけることができませんでした。私を助けてください!

+0

の入力として(のMouseMoveまたはマウスダウン)イベントをキャッチする必要があります。イベントは –

+0

^をdefined_されていません。グローバルイベントオブジェクトがFFではサポートされていないため、代わりにイベントオブジェクトを渡してください。また、 'unselectable'は、他のブラウザーでは動作しない、古代のIEの残骸です。 – Teemu

+0

好奇心から離れて、グローバルイベントオブジェクトの使用を学んだことがありますか?それを使用するための1つ以上のオンライン記事がありますか?これは決して標準の一部ではなく、比較的短時間の間もChromeでサポートされています。 – Teemu

答えて

2

あなたは_Referenceエラーを言ってエラーがあるラップ機能

drgElement.addEventListener('mousedown', function(event)... 

var h = window.innerHeight|| document.documentElement.clientHeight || document.body.clientHeight; 
 
     window.onload = function() { 
 
// ------------------lock the div with mouse pointer-------------- 
 

 

 
// variable dragged is for identified that you are click on the button or not 
 
var dragged = false, 
 
y = 0,pointerDis = 0, 
 
boxElement = document.getElementById('drag'), 
 
drgElement = document.getElementById('titl'); 
 
      if (boxElement) { 
 
// -----------------check whether the title div is holding by the mouse to lock it with mouse------- 
 
\t drgElement.addEventListener('mousedown', function(event) { 
 
\t  dragged = true; 
 
     pointerDis = event.clientY - parseInt(window.getComputedStyle(boxElement, null).getPropertyValue("top")); 
 

 
}); 
 
//------------------check whether the title div is released to drop the div------------------------- 
 
\t document.addEventListener('mouseup', function() { 
 
\t dragged = false; 
 
}); 
 
    document.addEventListener('mousemove', function (event) { 
 
     y = event.clientY; 
 
    \t if(dragged == true) 
 
    \t { 
 
      y = y -pointerDis; 
 
      if(y<0) 
 
      { 
 
       y = 0; 
 
      } 
 
      else if(y > window.innerHeight - boxElement.offsetHeight) 
 
      { 
 
       y = window.innerHeight - boxElement.offsetHeight; 
 
      } 
 
    \t \t boxElement.style.top = y + 'px'; 
 
    \t } 
 
    }); 
 
} 
 
};
.drg { 
 
\t \t \t position: absolute; 
 
\t \t \t top:0; 
 
\t \t \t right: 0; 
 
\t \t \t background: red; 
 
\t \t \t border-top-left-radius: 45px; 
 
\t \t \t border-bottom-left-radius: 45px; 
 
\t \t } 
 
\t \t #titl{ 
 
\t \t \t background: blue; 
 
\t \t \t width: 50px; 
 
\t \t \t text-align: center; 
 
\t \t \t color: white; 
 
\t \t \t font-size: 30px; 
 
\t \t \t border-top-left-radius: 10px; 
 
\t \t } 
 
\t \t #det{ 
 
\t \t \t background: #f9c500; 
 
\t \t \t width: 50px; 
 
\t \t \t border-bottom-left-radius: 10px; 
 
\t \t \t text-align: center; 
 
\t \t }
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
\t <title>test 4</title> 
 
</head> 
 
<body> 
 
<div class = "drg" id="drag"> 
 
\t <div id="titl" unselectable="on" onselectstart="return false;">....</div> 
 
\t <div id="det">this is the details menu</div> 
 
</div> 
 
</body> 
 
</html>

関連する問題