gpt4 book ai didi

javascript - 在带有框架的 html 页面中捕获按键事件

转载 作者:太空宇宙 更新时间:2023-11-04 14:47:58 26 4
gpt4 key购买 nike

我有一个带框架的jsp页面

<%@ 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>

我正在 try catch 转义键。但这似乎不起作用。在每个单独的帧 html 上,如果我编写相同的捕获代码,它工作得很好。

我应该在上面的代码中做哪些更改,以便我只编写一次 keydown 代码,使我能够在任何框架的页面上的任何位置捕获 keydown。

最佳答案

请记住,框架是一个带有完整独立 DOM 的全新 HTML 页面,因此 jQuery 不会将其包含在您的绑定(bind)中。

因此您还需要绑定(bind)到这些文档:

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);

如果由于 id 的原因上述方法对您不起作用:

for (var i = 0; i < window.parent.frames.length; i ++) {
var frame = window.parent.frames[i].document;
frame.addEventListener("keydown",keyDownHandler, true);
}

如果你想引用所有帧,从顶层开始

for (var i = 0; i < top.window.frames.length; i ++) {
var frame = top.window.frames[i].document;
frame.addEventListener("keydown",keyDownHandler, true);
}

关于javascript - 在带有框架的 html 页面中捕获按键事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4613213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com