------------------------------------------------
window.event跨浏览器问题的解决方法
------------------------------------------------
如果遇到 window.event时在函数中就要特别处理:
e.g.
页面中:
<input type="button" value="test" onclick="javasctipt:testOnclick(event)">
javasctipt中的代码
function testOnclick(evt){
evt = evt ? evt : (window.event ? window.event : null);
}
------------------------------------------------------
跨浏览问题总结
-------------------------------------------------------
注意的一些问题:
(一)尽量使用javascript/DOM标准
(二)标准有时也不能跨浏览器
1)要面对跨浏览器的时候经常会遇到一些ie特有的函数?
可以这样解决:
做一个判断把ie和firefox的javascript代码分开写
if (typeof window.ActiveXObject != 'undefined') { // 支持IE浏览器
//do some thing here
}
else if((typeof document.implementation != 'undefined')&&(typeof document.implementation.createDocument!='undefined')) { // 支持Firefox浏览器
//do some thing here
}
2)如果遇到 window.event时在函数中就要特别处理:
e.g.
页面中: <input type="button" value="test" onclick="javasctipt:testOnclick(event)">
javasctipt中的代码
function testOnclick(evt){
evt = evt ? evt : (window.event ? window.event : null);
}
3)关于Array的indexOf方法问题
Array是object对象,有些浏览器不支持idsArray.indexOf(..),这个方法也不是javascript标准,用循环可以拿到最正确的值
4)页面调用框架中的方法问题
比如有个 A.html,他包含了B.html; B.html有个 test()方法,有个button,按button就触发test方法
写法:<input type="button" value="test" onclick="top.B.test()"/>
如果用<input type="button" value="test" onclick="test()"/>在firefox上会不起作用
5)window.top.BB.document.getElementById("BFrame") 和window.top.BB.BFrame的不同 BB,BFrame是frame的name的value
window.top.frames["BB"].document.getElementById("BFrame")==window.top.BB.document.getElementById("BFrame") 结果是true,他们是同一对象
window.top.frames["BB"].document.getElementById("BFrame")==window.top.BB.BFrame 结果是 false,说明他们是不同的对象
window.top.BB.BFrame 是object window
window.top.frames["BB"].document.getElementById("BFrame")和window.top.BB.document.getElementById("BFrame")是objectHTMLFrameElement
他们在删除的时候也不一样,
object window拿到的是window对象,要删除两次才可以删掉,有时还会报错
objectHTMLFrameElement是页面中的frame元素,删一次就可以完全删除了,注意这样的删除只是指向了null,而objectHTMLFrameElement元素还是存在的
(三)初始化问题
在使用对象的时候,尽可能在使用前初始化,这样可以避免一些加载问题
(四)其他问题:
下面的代码用于屏蔽firefox鼠标右键
<script type="text/javascript">
document.oncontextmenu=function(e){return false;}
</script>
关于禁止选择:
在IE下,禁止用户选择内容,用脚本可以实现:
<script>
document.onselectstart = function(){return false;}
</script>或
<body onselectstart="return false">
在firefox,这样子的写法没法实现相同的功能,不过可能用css实现:
在页面加上
<style>
html *{-moz-user-select: none;}
</style>
例子:
<style>
html *{-moz-user-select: none;}
</style>
<body>
试试看能否选择这些文字?
</body>
鼠标右键事件
页面中:
<input type="button" value="test" onclick="javasctipt:test(event)">
javasctipt中的代码
function test(evt) {
//alert("evt:NEW "+evt);
if(typeof window.ActiveXObject != 'undefined') { // 支持IE浏览器
//alert("支持IE浏览器");
//遨游的鼠标右健是0,GB的鼠标右健是2
if ((event.button==2 ||event.button==0)&&text!="首页")
//dosomething
}else{
//alert("支持MF浏览器");
evt = evt ? evt : (window.event ? window.event : null);
var rightnum=evt.button;//鼠标右键的值为2,兼容IE和FF
if(rightnum==2){
//dosomething
}
}
}
分享到:
相关推荐
火狐浏览器不支持window.event的解决办法,解决不同浏览器针对window.event的差异
在JavaScript编程语言中,`window.event`对象是一个特殊对象,它与...尽管现代浏览器推荐使用`addEventListener`和事件处理函数参数来代替全局`window.event`,但在处理兼容性问题时,理解`window.event`仍然是必要的。
这个方法的原理是,当浏览器关闭时,window.event.screenX 和 window.event.clientY 属性的值将满足一定的条件,因此可以根据这个条件来判断浏览器是刷新还是关闭窗口。 我们可以使用 onunload 事件和 event....
### 火狐浏览器下将回车键事件转换为Tab键事件的解决方案 在Web开发过程中,有时我们需要处理用户在不同浏览器中的键盘操作差异。本文将详细介绍如何在Firefox(火狐)浏览器中将用户按下回车键的行为转换为按下Tab...
然而,在早期的非IE浏览器中,如Firefox、Chrome、Safari和Opera,并不直接支持`window.event`,它们通常会将事件对象作为事件处理函数的第一个参数传递,如`function(event)`中的`event`。 标题和描述中提到的情况...
`window.event` 对象是基于早期浏览器实现的一个标准,尤其是在IE浏览器中被广泛支持。尽管现代浏览器倾向于使用更符合W3C规范的事件模型,但在一些旧版或者特定环境下,`window.event` 仍然是非常有用的概念。下面...
总结起来,`getEvent()` 函数是解决跨浏览器事件处理中 `window.event` 不兼容问题的一个实用解决方案。它能够在各种浏览器环境下提供事件对象,使得开发者可以一致地处理事件和访问事件目标元素。在实际开发中,...
在大部分现代浏览器中,我们可以使用`event.preventDefault()`方法来实现这一功能,然而,对于古老的Internet Explorer(IE)浏览器,情况就有所不同了。本文将详细讲解在IE浏览器中如何阻止右键点击的默认行为以及`...
在网页编程中,事件处理是必不可少的一环。事件处理涉及到诸多方面,其中包括事件监听、事件触发、以及事件...通过getEvent()函数,可以有效解决跨浏览器事件源获取的问题,使得事件处理代码具备更好的兼容性和简洁性。
8. window.event问题:在IE浏览器中,window.event可以正常工作,但Firefox浏览器中,event只能在事件发生的现场使用。为了解决这个问题,建议在事件触发的函数上添加event参数,并在函数体内使用event参数,如event...
为了处理跨浏览器的兼容性问题,通常推荐的做法是创建一个通用的事件处理函数,使其既能接受标准的事件对象参数,也能从`window.event.srcElement`获取元素,如: ```javascript function handleEvent(evt) { var ...
JavaScript中的`window.event`对象是浏览器内置的一个全局变量,它提供了关于当前正在处理的事件的信息。这个对象在事件处理函数内部可用,包含了与事件相关的各种属性和方法,如按键状态、鼠标位置等。下面我们将...
### 浏览器兼容性总结 #### 一、数组元素获取方法 对于不同的浏览器,在处理数组元素时有所差异。在 Internet Explorer(以下简称IE)中,可以通过`()`或`[]`来访问数组元素;而在 Firefox 中,则只能通过`[]`来...
`window.event.srcElement` 是一个在IE浏览器中获取触发事件的元素的方法。虽然在标准的DOM事件模型中,这个属性被`event.target`所替代,但在兼容旧版IE(尤其是IE8及以下版本)的代码中,`srcElement`仍然是一个...
在跨浏览器开发中,处理事件(event)的兼容性问题是一项常见的挑战。不同的浏览器对事件模型的支持程度不同,这导致了开发者在编写JavaScript代码时需要考虑多种情况,以确保代码在各种浏览器上都能正常运行。本文...
本文实例总结了JS针对浏览器窗口关闭事件的监听方法。分享给大家供大家参考,具体如下: 方式一:(适用于IE浏览器,而且刷新不提示,只在点击浏览器关闭按钮的时候提示) [removed] [removed]=onclose; function ...
### JS浏览器兼容问题总结 #### 一、Document.form.item问题 ...通过以上分析和解决方法,我们可以有效地解决JavaScript在不同浏览器之间遇到的兼容性问题,从而确保代码能够在多种环境中稳定运行。
标题和描述中提到的问题是关于如何在IE和Firefox之间实现`window.event.keyCode` 的兼容性。以下是一个详细的解决方案: ```html <!-- HTML 部分 --> (event);" > ``` 在这个HTML代码中,我们为一个文本输入框添加...