我知道同源策略,只是想方设法。在iframe上触发点击
无论如何,我有一个幻灯片(slide.js),它有一些嵌入的视频。当用户点击视频时,我希望幻灯片暂停播放。来自iframe内部的事件不会触发,所以我试图解决这个问题。现在我有一个部分解决方案。我发现在window
一个blur
事件,如果新的焦点内容是iframe
然后我暂停播放幻灯片:
document.activeElement is:
BODY
现在部分:
$(window).blur(function(event){
console.log(event.target);
if($('iframe').is(':focus')){
//clicked inside iframe
console.log('test');
}
console.log('document.activeElement is:');
console.log(document.activeElement);
console.log('\n');
});
我在控制台中看到此页面加载后令我困惑。单击事件仅在iframe
第一个以外的某个位置点击时触发iframe
焦点事件。也就是说,在加载页面后,如果我直接点击iframe,控制台就不会记录测试。如果我在框架外部或浏览器中的其他选项卡或其他任何地方单击,则会触发事件blur
。之后,如果我点击的iframe,然后我在控制台中看到测试:
加载页面后,我点击不同的标签,然后再回到原来的标签:
Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
document.activeElement is:
<body class="full">...</body>
然后我点击的iframe:
Window {top: Window, window: Window, location: Location, external: Object, chrome: Object…}
test
document.activeElement is:
<iframe>...</iframe>
为什么?
我甚至之前的一切把这个,它并没有帮助:
$(window).focus();
但是,它的工作原理,如果我这样做:
$('input').focus();
如果输入集中,那么我就可以点击iframe并触发事件,而不必事先点击其他任何东西。
帮助我,你是我唯一的希望......
谢谢您的回答。实际上页面上已经有了一个输入,而且我之前已经尝试了这个输入,并且在我首先关注它的时候它就起作用了。它可能与自动对焦的其他形式可能会与此冲突,所以这是最后的解决办法。 – smilebomb 2013-05-14 18:20:09
@jefffabiny - 编辑我的答案,这是否适合你? – adeneo 2013-05-14 18:24:04
是的。我可以发誓我已经尝试过那个......有趣的是,$(window).focus()不起作用。我会暂时接受你的回答。首先,我希望有人尝试解释为什么会发生这种情况。 – smilebomb 2013-05-14 18:27:48