2009-10-13 85 views
0

当我关注iframe并尝试按esc键关闭窗口时,什么都不会发生。我认为这是因为重点的iframe没有订阅这个事件。有没有人有任何想法,我可以将这个事件附加到iframe,而无需手动编辑thickbox中包含的每一个页面?当iframe集中时按下Esc键时,Thickbox不会关闭

回答

1

该解决方案适用于Internet Explorer,这恰好是我的客户端使用的唯一浏览器,但我更喜欢一个至少可以在Firefox中工作的解决方案。

$("#TB_iframeContent").ready(function(){ 
    setTimeout(function(){ 
     $('#TB_iframeContent').contents().find('body').keyup(function(e){ 
      if(e.keyCode == 27){ 
       tb_remove(); 
      } 
     }); 
    }, 50); 
    }); 

我在原来的thickbox源代码的第245行添加了这个。

0

你在iframe中运行Flash吗?它可能正在窃取你的键盘焦点。

+0

不,我可以重新在火狐,Chrome,即问题。 – Dave 2009-10-13 21:26:30

+0

有没有办法关闭iframe,即使它在运行例如视频? – 2016-02-16 12:34:08

0

它出于安全原因不起作用。在iframe中发生的事件都不允许向包含文档冒出来。

0

我可以通过替换thickbox.js文件的第245行来解决此问题。

刚刚更换:

if(!params['modal']){ 

if(params['modal'] != "true"){ 
0

只添加这在你的代码

$('#TB_iframeContent').ready(function(){ 

    setTimeout(function(){ 
     $(window).keyup(function(e){ 
        if(e.keyCode == 27){ 
        $('#TB_closeWindowButton').click(); 
      } 
      }); 
     }, 50); 

});