2017-02-15 10 views
1

問題を示すためにhtmlページを作成しました。
Google Chromeでこの文書をロードしてください:Chromeのホイールイベント後にmailtoリンクが動作しない

<html> 
<head> 
<script language="javascript"> 
var allow = true; 
window.addEventListener("keydown", EvKeydown); 
window.addEventListener("wheel", EvWheel); 

function EvKeydown(ev) { 
    window.document.body.innerHTML += "key "; 
    window.location.href = "mailto:[email protected]"; 
} 
function EvWheel(ev) { 
    if (allow) { 
     allow = false; 
     window.document.body.innerHTML += "wheel "; 
     window.setTimeout(function() {allow = true}, 500); 
     window.location.href = "mailto:[email protected]"; 
    } 
} 
</script> 
</head> 
<body> 
</body> 
</html> 

私のメールプログラム(MS Outlookが)私は、キーを押すたびに実行されます。
ホイールを回すと、ドキュメントが読み込まれた後初めて、そして前にキーが押されていないときにのみホイールが実行されます。
マウスボタンをクリックすると「リセット」され、ホイールでもう一度実行されますが、1回だけ実行されます。
私はこれもMS IEとEdgeでテストしました。それは完全に動作します。
誰もそれ以上の光を投げることはできますか?

+1

、なぜあなたができるように変数を作成していますか? –

答えて

0

許可変数とif文を削除し、それが毎回

<script language="javascript"> 

window.addEventListener("keydown", EvKeydown); 
window.addEventListener("wheel", EvWheel); 

function EvKeydown(ev) { 
    window.document.body.innerHTML += "key "; 
    window.location.href = "mailto:[email protected]"; 
} 

function EvWheel(ev) { 
    window.document.body.innerHTML += "wheel "; 
    window.setTimeout(function() {allow = true}, 500); 
    window.location.href = "mailto:[email protected]"; 

} 
</script> 
+0

申し訳ありませんが、許可テストは、ホイールが複数のステップになったときに連続するmailtoの実行を防ぐためのテストです。それを削除しても何も変わらないので、テストしてください。 –

0

実行されます私はこれにかなりの時間を費やしてきた、これまでのところ、これは私が思い付くことができる唯一のオプションです。

コードの目的次第で、次の行を追加すると、達成しようとしていることが実行されます。

setTimeout(function(){document.location.href = window.location.href },500); 

全HTML:

<html> 
     <head> 
      <script type = "text/javascript"> 
      window.addEventListener("keydown", EvKeydown); 
      window.addEventListener("wheel", EvWheel); 

      function EvWheel(ev) { 
       window.document.body.innerHTML += "wheel "; 
       setTimeout(function(){document.location.href = window.location.href },500); 
       window.location.href = "mailto:[email protected]"; 
      } 

      function EvKeydown(ev) { 
       window.document.body.innerHTML += "key "; 
       window.location.href = "mailto:[email protected]"; 
      } 
     </script> 
     </head> 
     <body> 
     </body> 
    </html> 
+0

Mosesさん、ありがとうございます。しかし、私のテストでは、 'window.location.href =" mailto:user @ domain.com "は' window.location.href'を実際に変更しないので、 'document.location.href = window .location.hrefはmailtoプロトコルを実行しませんが、単にページをリロードします –

+0

これはChromeの隠された設定ですが、GoogleとMSが大好きなこれらの愚かなアイデアの1つです。「Runningは非常に危険です。あなたは落ちて、頭を打って死ぬことができます。だからあなたが走ってしまうのを防ぐために足を切るでしょう。 –

関連する問題