2017-02-15 1 views
1

Ich habe eine HTML-Seite erstellen, um das Problem zu demonstrieren.
Bitte laden Sie dieses Dokument in Google Chrome:Mailto-Link funktioniert nicht nach Rad-Ereignis in Chrome

<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> 

Mein Mail-Programm (MS Outlook) läuft jedes Mal, wenn ich eine Taste drücken.
Das Drehen des Rads wird nur beim ersten Mal ausgeführt, nachdem das Dokument geladen wurde und zuvor keine Taste gedrückt wurde.
Klicken Sie eine beliebige Maustaste "setzt" zurück und das Rad fährt es erneut, aber nur einmal.
Ich habe dies auch in MS IE und Edge getestet. Es funktioniert perfekt.
Kann jemand etwas Licht darüber werfen?

+1

warum erstellen Sie eine Variable zulassen? –

Antwort

0

entfernen die Variable und if-Anweisung erlauben und es wird jedes Mal

<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

Sorry, aber der Allow-Test dient lediglich dazu, aufeinanderfolgende Mailto-Rennen zu verhindern, wenn das Rad mehr als einen Schritt gedreht wird. Das Entfernen ändert nichts, bitte testen Sie es. –

0

Ich habe verbrachte einige Zeit auf dieser, und so weit, dies ist die einzige Option, die ich kommen könnte mit laufen.

Je nach dem Zweck Ihres Codes wird das Hinzufügen der folgenden Zeile das tun, was Sie erreichen möchten.

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

Full 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

Danke Moses, aber in meinen Tests scheint es, dass 'window.location.href =" mailto: user @ domain.com' nicht wirklich 'window.location.href' ändert, also' document.location.href = window .location.href' führt das mailto-Protokoll nicht aus, sondern lädt die Seite einfach neu. –

+0

Vielleicht ist dies eine versteckte Einstellung von Chrome, eine dieser dummen Ideen, die Google und MS so sehr lieben. Es ist so, als würde man sagen: "Laufen ist sehr gefährlich. Du kannst fallen, deinen Kopf treffen und sterben. Also werden wir dir das Bein brechen, um dich am Laufen zu hindern. " –

Verwandte Themen