Javascript 如何设置聚焦于单击的元素?
基本上,我有一个HTML5视频元素,点击时我需要使它成为焦点,这样我就可以控制用户键盘触发器 这是我的密码:Javascript 如何设置聚焦于单击的元素?,javascript,jquery,Javascript,Jquery,基本上,我有一个HTML5视频元素,点击时我需要使它成为焦点,这样我就可以控制用户键盘触发器 这是我的密码: $(function(){ var focused_vid; $('.videoe').click(function(){ focused_vid = this }); $(document).keydown(function(e){ if (focused_vid){ // keyboard handler
$(function(){
var focused_vid;
$('.videoe').click(function(){ focused_vid = this });
$(document).keydown(function(e){
if (focused_vid){
// keyboard handler
}
});
});
在我的视频元素旁边有一个文本框。问题是,一旦视频被聚焦,它将禁止我在文本框中键入内容,并不断触发视频处理程序的按键,即使我:
$(window).click(function(e) {
$(e.srcElement.className).focus();
});
注意:)不要使用
event.srcmelement
这是Firefox不支持的非标准IE属性。使用所有现代浏览器都支持的event.target
。尝试使用.blur()
方法将焦点从视频中移开。请参阅代码片段,以了解如何实现这一点
片段
$(函数(){
var聚焦视频;
$('#vid1')。单击(函数(){
聚焦视频=此
});
$(文档).keydown(函数(e){
如果(聚焦视频){
log('focused on'+e.target.className);
}
});
});
$(窗口)。单击(函数(e){
$('#vid1').blur();
var tgt=e.target;
$(tgt.focus();
log('focused on'+tgt.className);
});代码>
/*这只是为了防止控制台遮挡演示*/
输入{
显示:块;
}
.as-console-wrapper.as-console-wrapper{
左边距:270px;
最大宽度:250px;
高度:100vh;
颜色:蓝色;
字体:400 15px/1.3控制台;
}
不要使用event.srcement
这是Firefox不支持的非标准IE属性。使用所有现代浏览器都支持的event.target
。尝试使用.blur()
方法将焦点从视频中移开。请参阅代码片段,以了解如何实现这一点
片段
$(函数(){
var聚焦视频;
$('#vid1')。单击(函数(){
聚焦视频=此
});
$(文档).keydown(函数(e){
如果(聚焦视频){
log('focused on'+e.target.className);
}
});
});
$(窗口)。单击(函数(e){
$('#vid1').blur();
var tgt=e.target;
$(tgt.focus();
log('focused on'+tgt.className);
});代码>
/*这只是为了防止控制台遮挡演示*/
输入{
显示:块;
}
.as-console-wrapper.as-console-wrapper{
左边距:270px;
最大宽度:250px;
高度:100vh;
颜色:蓝色;
字体:400 15px/1.3控制台;
}
它可能也会帮助其他人
var focused_vid=null;
$(function(){
$('.videoe').click(function(){ focused_vid = this });
$(document).keydown(function(e){
if (focused_vid){
// keyboard handler
}
});
});
function notfocused(){
focused_vid=null;
}
稍后我们可以调用notfocused
方法来删除视频处理键盘按钮
$(document).click(function(e) {
$('.videoe').blur();
var tgt = e.target;
$(tgt).focus();
if(tgt.className!="videoe")
notfocused();
});
它可能也会帮助其他人
var focused_vid=null;
$(function(){
$('.videoe').click(function(){ focused_vid = this });
$(document).keydown(function(e){
if (focused_vid){
// keyboard handler
}
});
});
function notfocused(){
focused_vid=null;
}
稍后我们可以调用notfocused
方法来删除视频处理键盘按钮
$(document).click(function(e) {
$('.videoe').blur();
var tgt = e.target;
$(tgt).focus();
if(tgt.className!="videoe")
notfocused();
});
您的$(窗口)中的e
。未定义单击。因此,回调最有可能在单击时抛出错误,e
即使不是,也不会成为单击事件。@t.niese仍然无法在$(窗口)中运行e
。未定义单击。因此,回调很可能在单击时抛出错误,即使不是,e
也不会是单击事件。@t.niese仍然不能很好地处理elements focus,但它仍然作为视频处理程序触发按钮。我忘了删除tabindex
属性。如果删除它们不能修复该行为,您是否可以发布结束的事件的事件处理程序?你可能忽略了一些东西,一组新鲜的眼睛(我的眼睛实际上是充血的)可能会发现一些东西。这对elements focus有效,但它仍然作为视频处理程序触发按钮。我忘了删除tabindex
属性。如果删除它们不能修复该行为,您是否可以发布结束的事件的事件处理程序?也许你忽略了一些东西,一双新鲜的眼睛(我的眼睛实际上是充血的)可能会发现一些东西。