2017-02-15 56 views
1

我已經構建了一個html頁面來演示這個問題。
請在谷歌瀏覽器加載該文件:mailto鏈接在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> 

我的郵件程序(MS Outlook)中運行,每次我按下一個鍵。
只有在文檔加載後的第一個時間纔開始轉動輪子,並且之前沒有按鍵。
點擊任何鼠標按鈕「重置」,輪子再次運行,但只有一次。
我已經在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

謝謝摩西,但在我的測試中,似乎'window.location.href =「mailto:user @ domain.com'並沒有真正改變'window.location.href',所以'document.location.href = window .location.href'不運行mailto協議,只是簡單地重新加載頁面 –

+0

也許這是Chrome的隱藏設置,Google和MS非常喜歡這些愚蠢的想法之一,就像是說「跑步非常危險,你可以掉下來,打你的頭,死。所以我們會打斷你的腿,阻止你跑步。「 –