2017-03-10 45 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/ –

相关问题