`

跨浏览问题总结和window.event跨浏览器问题的解决方法

阅读更多
------------------------------------------------
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的解决办法,解决不同浏览器针对window.event的差异

    window.event 对象详解

    在JavaScript编程语言中,`window.event`对象是一个特殊对象,它与...尽管现代浏览器推荐使用`addEventListener`和事件处理函数参数来代替全局`window.event`,但在处理兼容性问题时,理解`window.event`仍然是必要的。

    onunload事件判断浏览器是刷新还是关闭窗口

    这个方法的原理是,当浏览器关闭时,window.event.screenX 和 window.event.clientY 属性的值将满足一定的条件,因此可以根据这个条件来判断浏览器是刷新还是关闭窗口。 我们可以使用 onunload 事件和 event....

    火狐下window.event回车改Tab解决方案

    ### 火狐浏览器下将回车键事件转换为Tab键事件的解决方案 在Web开发过程中,有时我们需要处理用户在不同浏览器中的键盘操作差异。本文将详细介绍如何在Firefox(火狐)浏览器中将用户按下回车键的行为转换为按下Tab...

    window.event快达到全浏览器支持了,以后使用就方便了

    然而,在早期的非IE浏览器中,如Firefox、Chrome、Safari和Opera,并不直接支持`window.event`,它们通常会将事件对象作为事件处理函数的第一个参数传递,如`function(event)`中的`event`。 标题和描述中提到的情况...

    高手window.event对象详解

    `window.event` 对象是基于早期浏览器实现的一个标准,尤其是在IE浏览器中被广泛支持。尽管现代浏览器倾向于使用更符合W3C规范的事件模型,但在一些旧版或者特定环境下,`window.event` 仍然是非常有用的概念。下面...

    替代window.event.srcElement效果的可兼容性的函数

    总结起来,`getEvent()` 函数是解决跨浏览器事件处理中 `window.event` 不兼容问题的一个实用解决方案。它能够在各种浏览器环境下提供事件对象,使得开发者可以一致地处理事件和访问事件目标元素。在实际开发中,...

    网页右键ie不支持event.preventDefault和event.returnValue (需要加window)

    在大部分现代浏览器中,我们可以使用`event.preventDefault()`方法来实现这一功能,然而,对于古老的Internet Explorer(IE)浏览器,情况就有所不同了。本文将详细讲解在IE浏览器中如何阻止右键点击的默认行为以及`...

    js事件源window.event.srcElement兼容性写法(详解)

    在网页编程中,事件处理是必不可少的一环。事件处理涉及到诸多方面,其中包括事件监听、事件触发、以及事件...通过getEvent()函数,可以有效解决跨浏览器事件源获取的问题,使得事件处理代码具备更好的兼容性和简洁性。

    JavaScript中解决多浏览器兼容性23个问题的快速解决方法

    8. window.event问题:在IE浏览器中,window.event可以正常工作,但Firefox浏览器中,event只能在事件发生的现场使用。为了解决这个问题,建议在事件触发的函数上添加event参数,并在函数体内使用event参数,如event...

    JS中的THIS和WINDOW.EVENT.SRCELEMENT详解

    为了处理跨浏览器的兼容性问题,通常推荐的做法是创建一个通用的事件处理函数,使其既能接受标准的事件对象参数,也能从`window.event.srcElement`获取元素,如: ```javascript function handleEvent(evt) { var ...

    js window.event对象详尽解析

    JavaScript中的`window.event`对象是浏览器内置的一个全局变量,它提供了关于当前正在处理的事件的信息。这个对象在事件处理函数内部可用,包含了与事件相关的各种属性和方法,如按键状态、鼠标位置等。下面我们将...

    浏览器兼容总结.txt

    ### 浏览器兼容性总结 #### 一、数组元素获取方法 对于不同的浏览器,在处理数组元素时有所差异。在 Internet Explorer(以下简称IE)中,可以通过`()`或`[]`来访问数组元素;而在 Firefox 中,则只能通过`[]`来...

    window.event.srcElement 得到事件源对象

    `window.event.srcElement` 是一个在IE浏览器中获取触发事件的元素的方法。虽然在标准的DOM事件模型中,这个属性被`event.target`所替代,但在兼容旧版IE(尤其是IE8及以下版本)的代码中,`srcElement`仍然是一个...

    event兼容调用(IE,Firefox,Chrome)

    在跨浏览器开发中,处理事件(event)的兼容性问题是一项常见的挑战。不同的浏览器对事件模型的支持程度不同,这导致了开发者在编写JavaScript代码时需要考虑多种情况,以确保代码在各种浏览器上都能正常运行。本文...

    JS针对浏览器窗口关闭事件的监听方法集锦

    本文实例总结了JS针对浏览器窗口关闭事件的监听方法。分享给大家供大家参考,具体如下: 方式一:(适用于IE浏览器,而且刷新不提示,只在点击浏览器关闭按钮的时候提示) [removed] [removed]=onclose; function ...

    JS浏览器兼容问题总结

    ### JS浏览器兼容问题总结 #### 一、Document.form.item问题 ...通过以上分析和解决方法,我们可以有效地解决JavaScript在不同浏览器之间遇到的兼容性问题,从而确保代码能够在多种环境中稳定运行。

    window.event.keyCode兼容IE和Firefox实现js代码

    标题和描述中提到的问题是关于如何在IE和Firefox之间实现`window.event.keyCode` 的兼容性。以下是一个详细的解决方案: ```html &lt;!-- HTML 部分 --&gt; (event);" &gt; ``` 在这个HTML代码中,我们为一个文本输入框添加...

Global site tag (gtag.js) - Google Analytics