2017-03-10 41 views
0

如何檢測用戶使用標記名javascript點擊元素?如何檢測用戶使用標記名javascript單擊元素?

Demo

var monitor = setInterval(function() { 
 
    var elem = document.activeElement; 
 
    if (elem && elem.tagName == 'SPAN') { 
 
    alert(elem); 
 
    clearInterval(monitor); 
 
    } 
 
}, 100);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<span>Click ON Span HERE</span>

當我測試我的代碼,它不工作,而不是任何錯誤報告。我能怎麼做 ?

回答

0

首先,不需要使用jquery(如果你的代碼是用純JS編寫的)。諸如span,div之類的元素不能接收按鍵或關注(通過對其進行標記),因此它們不會是activeElement

當沒有選擇,有源元件是一個網頁的<body>null來源document.activeElement

以激活它,你可以使用contentEditable="true",只需單擊它,看它的工作。見下面摘錄

var monitor = setInterval(function() { 
 
    var elem = document.activeElement; 
 
    if (elem && elem.tagName == 'SPAN') { 
 
    alert(elem); 
 
    clearInterval(monitor); 
 
    } 
 
}, 100);
<span contentEditable="true">Click ON Span HERE</span>

由於每@mongkon mamiw評論的視頻標籤沒有contentEditable attribute但可以專注於播放視頻一樣,

var monitor = setInterval(function() { 
 
    var elem = document.activeElement; 
 
    if (elem && elem.tagName == 'VIDEO') { 
 
    alert(elem); 
 
    clearInterval(monitor); 
 
    } 
 
}, 100); 
 
document.getElementById("vid").addEventListener('play', function() { 
 
    this.focus(); 
 
});
<video id="vid" controls="" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen="" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"> 
 
    <source src="https://www.threadsbay.com/kkkk.mp4"> 
 
</video>

+0

但爲什麼不工作時,從span標籤更改爲視頻標籤這樣的http:// jsf iddle.net/8nvvg4oz/1/ –

相關問題