2011-01-06 50 views
2

html页面的keydown事件我有帧捕获与帧

<%@ include file="/includes/taglibs.jsp"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> 
<html> 
    <head> 
    <title>Welcome</title> 
    <script type="text/javascript" src="/js/jquery-1.3.2.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function(){ 
      $(this).keydown(function(e) { 
       if(e.keyCode==27){ 
        alert("escape pressed"); 
        e.preventDefault(); 
       } 
      });  
     } 
     ); 
     </script> 
    </head> 
     <frameset rows="42,*" frameborder="0" framespacing="0" id="framest"> 
      <frame src="/xyz/abc.html" scrolling="no" name="frame1"/> 
      <frame src="/xyz/init.html" scrolling="no" name="frame2"/> 
     </frameset> 
</html> 

我试图捕捉逃跑按键一个jsp页面。但这似乎并不奏效。在每个单独的框架html上,如果我编写相同的捕获代码,它的工作原理非常好。

我应该在上面的代码中做什么修改,以便我只写一次keydown代码,这使我能够在任何页面上的任何页面上捕获keydown。

+0

位无关,但`frames`现在已被弃用,我强烈建议使用`iframes`而不是 – Dan 2011-01-06 10:47:05

回答

4

记住一个框架是一个全新的HTML页面,它带有一个单独的DOM,因此jQuery不会将它包含在绑定中。

所以,你需要绑定到这些文件还:

function keyDownHandler(e) { 
    if(e.keyCode==27){ 
     alert("escape pressed"); 
     e.preventDefault(); 
    } 
} 

for (var id in window.parent.frames) 
    $(window.parent.frames[id].document).keydown(keyDownHandler); 
$(document).keydown(keyDownHandler); 
+0

谢谢这种方法适用于我 – Raks 2011-01-06 11:06:18

2

你也可以试试这个:

编写代码的.js文件,其中包括在所有帧中的文件。这样你只需要写函数就可以了,你可以在所有框架中调用它。

希望能得到这些结果。