2011-01-06 77 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文件,其中包括在所有幀中的文件。這樣你只需要寫函數就可以了,你可以在所有框架中調用它。

希望能得到這些結果。