废话不多说直接上代码
想直接用
?
没问题!直接复制到项目里,随你放在哪一层Frame里,那一层所包含的所有Frame--无论是已经加载的,还是需要用户响应才会加载的,只要加载完毕,就给他加上个监听。
我的这段代码只是为了禁用Ctrl+N 键的,所以只用了onkeydown事件,
当然你可以改成其他事件,也可以禁用其他键盘操作。
当然还有缺陷拉,请各位斧正!
只适合IE,没空做兼容
<script language="javascript" type="text/javascript">
//window.onerror=function(){return false;};//为false时
</script>
<script language="javascript" type="text/javascript">
window.debugflag = true;
function keydown(){
try{
if(arguments[0]&&(arguments[0].ctrlKey)&&(arguments[0].keyCode=='78')){
arguments[0].returnValue=false;
var d =arguments[0];
alert('Reject this action! \n\nDocTitle:'+arguments[0].srcElement.document.title);
}
}catch(e){
if(window.debugflag)alert(e.message);
}
}
document.onreadystatechange = function(){
if(document.readyState=="complete"){
addKeyDownListener(window.document);
}
}
function frameonready(){
try {
if(arguments[0]&&arguments[0].srcElement&&arguments[0].srcElement.readyState=="complete"){
var d = arguments[0].srcElement;
d.contentWindow.document.attachEvent("onkeydown",keydown);
}
} catch (e) {
if (window.debugflag)alert(e.message);
}
}
function frameonload(){
try {
alert("onload---\n\nDocTitle:"+arguments[0].srcElement.document.title);
if(arguments[0].srcElement.readyState=="complete"){
var d = arguments[0].srcElement;
d.document.attachEvent("onkeydown",keydown);
if(d.contentWindow!=d.contentWindow.parent){
addKeyDownListener(arguments[0].srcElement.document);
}
}
} catch (e) {
if (window.debugflag)alert(e.message);
}
}
function propertychange(e) {
try {
if(e.propertyName=='src'){
alert("src change");
arguments[0].srcElement.attachEvent("onreadystatechange",frameonready);
addKeyDownListener(arguments[0].srcElement.document);
}
} catch (e) {
if (window.debugflag)
alert(e.message);
}
}
function addKeyDownListener(doc) {
try{
var len = 0;
if (doc.frames) {
len = doc.frames.length;
}
if (len > 0) {
for ( var i = 0; i < len; i++) {
//alert("frameName:"+doc.frames[i].name+"-- len:"+doc.frames[i].frames.length);
if(!doc.frames[i].document.keydownEventCount){
doc.frames[i].document.attachEvent("onkeydown", keydown);
doc.frames[i].document.keydownEventCount=1;
}
var tmpframe = doc.getElementsByTagName("FRAME")[i];
if(!tmpframe){//如果内嵌的是iframe tmpframe对象就为null
tmpframe = doc.getElementsByTagName("IFRAME")[i];
if(!tmpframe.readyEventCount){//判断tmpframe对象是否已定义readyEventCount属性并赋值,若已定义并赋值了,说明就不需要再添加listener
tmpframe.attachEvent("onreadystatechange",frameonready);
tmpframe.readyEventCount=1;
}
}else
if(!tmpframe.loadEventCount){
tmpframe.attachEvent("onload",frameonload);
tmpframe.loadEventCount=1;
}
addKeyDownListener(doc.frames[i].document);
}
}
} catch (e) {
if (window.debugflag)
alert(e.message);
}
}
if (document.attachEvent) {
document.attachEvent("onkeydown", keydown);
} else {
document.addEventListener("onkeydown", keydown, true);
alert("Warning");
}
</script>
分享到:
相关推荐
本教程将深入探讨如何使用JavaScript和jQuery创建一个兼容主流浏览器,包括“臭名昭著”的IE6的无限级菜单。 首先,我们需要理解无限级菜单的基本概念。无限级菜单允许用户在多个层次之间导航,这意味着菜单项可以...
在JavaScript中,我们可以为文本框添加`click`事件监听器,当用户点击文本框时触发弹出层,然后在弹出层中加载树形结构的页面。 接着,"点击节点的值后文本框可以获取到值"意味着我们需要在树形结构的节点上绑定...
### Firefox浏览器兼容JS脚本详解 #### 一、概述 随着Web技术的不断发展与进步,JavaScript作为前端开发的重要组成部分,在不同浏览器之间的兼容性问题显得尤为关键。本文将围绕Firefox浏览器与Internet Explorer...
本文将深入探讨如何使用JavaScript(特别是jQuery库)来创建一个兼容各种浏览器的日历代码,包括IE、Opera、Safari、Firefox和Mozilla。 首先,JavaScript(简称JS)是一种轻量级的脚本语言,广泛应用于网页动态...
总结来说,"IE关闭主窗口时,同时关闭所有的子窗口"这个问题是通过JavaScript编程解决的,利用了浏览器提供的API和事件监听机制,实现了一个自定义的窗口管理逻辑。这在开发多窗口交互的应用或者需要控制窗口生命...
1. **事件监听**:使用`addEventListener`或`attachEvent`(旧版IE浏览器)添加点击事件监听器,当用户点击某个节点时触发相应的函数。 2. **DOM操作**:通过`document.getElementById`、`document.querySelector`...
Drip(Detection of Recursive Leaks in IE,IE递归泄漏检测)是由Microsoft员工Steve Sounders开发的一个轻量级工具,用于检测IE中的JS内存泄漏。Drip-0.5是该工具的一个特定版本,它提供了更为稳定和精确的检测...
2. **事件监听**:使用`addEventListener`或`attachEvent`(对于老版本的IE)为菜单项添加点击事件监听器,当用户点击时触发相应的函数。 3. **CSS样式控制**:通过修改元素的CSS属性,如`display`,可以控制菜单项...
3. JavaScript逻辑处理:利用JavaScript事件监听和DOM操作来实现菜单的动态行为。例如,当用户点击某个节点时,通过改变`style.display`属性来控制子菜单的展开与折叠。同时,可以添加额外的事件监听器处理选中、...
本文将深入探讨如何使用JavaScript(JS)来模拟实现Windows系统风格的多级右键菜单,以增强网页应用的用户体验。 一、理解Windows系统右键菜单 Windows系统中的右键菜单通常包含一个或多个主菜单项,每个主菜单项下...
3. 事件处理:`onchange`事件监听器,`addEventListener`或`attachEvent`(IE)也可以实现相同功能。 4. 数据结构和递归:使用数组和对象表示多级分类,递归函数处理多级关系。 5. 动态更新DOM:根据用户选择动态生成...
JavaScript(简称JS)是一种轻量级的解释型编程语言,广泛应用于网页和网络应用开发,尤其在客户端渲染和交互方面有着显著的优势。在本话题中,我们主要讨论的是使用JavaScript实现的树形菜单,它是一种常见的用户...
"风声JS菜单树V1.00"是一种基于JavaScript、XHTML和CSS标准的菜单系统,它具有高度的兼容性和灵活性,能够适应各种服务器环境和浏览器类型,包括老旧的IE浏览器到现代的Chrome、Firefox等。这种菜单树设计的目标是...
2. **事件处理**:JavaScript通过`addEventListener()`或`attachEvent()`(IE浏览器)监听用户行为,如点击事件。当用户点击导航树的某个节点时,可以触发相应的函数来展开或收起子节点。 3. **CSS样式**:配合...
通过添加事件监听器和改变DOM元素的样式,可以实现下拉菜单的响应式行为。 2. CSS:CSS则负责下拉菜单的样式设计,包括布局、颜色、字体、过渡动画等。通过合理的布局(如position属性的使用)和适当的伪类选择器,...
3. **级联展开**:对于多级菜单,我们可能需要递归地处理每一级子菜单。当点击一个菜单项时,不仅要展开当前菜单,还要检查是否有下一级子菜单并相应地处理。 4. **动画效果**:为了提升用户体验,我们可以添加过渡...
在实际应用中,你可以根据需求自定义警告条的内容,调整样式,甚至添加更多的交互功能,如添加点击事件监听器,或者更改动画效果。此外,对于现代浏览器,可能需要考虑使用更高级的CSS3属性和JavaScript库来实现更...
在这个“超多树形结构的JavaScript菜单实例”中,我们将深入探讨如何利用JS实现灵活、可扩展且兼容各主流浏览器的树形菜单。 首先,树形菜单的基本概念是通过节点和边来构建一个有层次的数据结构。每个节点可以有零...
JavaScript,简称JS,是Web开发中的重要组成部分,主要用于网页和网络应用的动态化和交互性。在这里,我们主要探讨如何使用JavaScript来创建一个扫雷游戏。 首先,扫雷的核心逻辑包括以下几个部分: 1. **棋盘生成...
JavaScript树型组件是一种常见的前端开发工具,用于在网页中展示层次结构的数据,通常以节点的形式呈现,节点可以展开和折叠,常用于导航菜单、数据筛选和配置选择等场景。在这个特定的案例中,我们讨论的是一款能...