防止iframe使用jquery保持焦点
Prevent iframe from keeping focus using jquery
背景:
我正在帮助一位老朋友,他有一个混合媒体幻灯片,其中一张幻灯片是嵌入lytro相机图像的iframe(它是交互式的,你可以点击或点击手机来更改焦点)。
问题:
我遇到的问题是,当你与iframe交互时,它会窃取桌面上的键盘焦点,并阻止箭头键允许你更改幻灯片。
我尝试过的:
我对此的主要攻击角度是试图使用jquery设置一个计时器,定期将焦点设置在父文档上,从iframe中删除焦点,并允许正确捕获击键。我注意到,如果我点击iframe之外的任何地方,那么我就可以正确地使用箭头键。
以下是我的jquery代码,以及关于我为什么尝试每种方法的注释。不幸的是,什么都没有起作用(我还尝试将lytro图像包含在嵌入标签中,而不是结果不变的iframe标签中)。
<script>
//make sure body maintains focus, so that swipe and arrows still work
function focusit(){
$('#focushere').focus(); // this is a div on the main page that I tried to set focus to
$('body').focus(); // tried moving focus to the body
$('embed').blur(); // tried bluring the embed
$('iframe').blur(); // tried bluring the iframe
$('body').click(); // tried faking a click on the body
$('#focushere').click(); //tried faking a click on a element
$(document).click(); // tried click on document
$(document).focus(); //tried setting focus to document
}
setTimeout(focusit, 100);
</script>
您的问题似乎有两个方面。
-
您使用的是
setTimeout
,它只会运行一次回调。我认为您的意思是使用setInterval
,它将重复运行回调。 -
不能在本机或jQuery中使用
focus
方法将焦点设置为document
。为了将焦点恢复到body
,您应该使用document.activeElement
对当前活动元素调用blur
方法。
示例:
function focusit(){
if(document.activeElement)
{
document.activeElement.blur();
}
}
setInterval(focusit, 100);
CodePen演示
相关文章:
- jQuery位置选择器输入样式背景和焦点
- jQuery"焦点”;在一个实例中有效,但在其他实例中无效
- JQuery自动完成-在焦点上显示完整菜单(从WP短代码中)
- 使用 jQuery 检查文本框焦点
- jQuery网站的键盘快捷键,焦点使用左键和右键转到上一个或下一个元素
- 如何使用jQuery获得超链接上的焦点或文本字段焦点上的按钮
- Jquery焦点不工作/滚动
- 使用JQuery将焦点更改为粘贴事件后的下一个输入
- 使用jQuery在焦点上选择文本框是't在移动浏览器中工作
- 移除焦点并单击event-Jquery
- Redactor.js jQuery UI对话框焦点问题
- 如何在iOS中对输入元素使用Jquery:焦点选择器
- JQuery UI日期选取器焦点
- 如何在使用jQuery按下TAB键后返回焦点
- jQuery Opera焦点事件不起作用
- Jquery焦点(in|out)以奇怪的顺序运行
- Jquery两个元素,切换焦点/点击..有效但滞后
- jQuery-滚动到某个元素时自动输入焦点
- jQuery中的焦点方法没有;不起作用
- 如果用户名正确,则自动移动焦点.jquery