在IE下可以直接用window.event。但FireFox并没有 window.event 。如果要得到 event 对象,就必须要声明时间处理函数的一个参数为 event 。
JavaScript代码
- <script type="text/javascript">
- function fun1(e){
- var ev = window.event || e;
- alert(ev);
- }
- </script>
- <input type="button" id="bt" value="Click me" onclick="fun1(event);" />
这个例子在ie和Firefox都是可以通过的。
但我们用到addEventListener来绑定事件又如何传递event呢。按照上面的方法
JavaScript代码
- <script type="text/javascript">
- function fun1(e){
- var ev = window.event || e;
- alert(ev);
- }
- function addEvent(el, evname, func) {
- if (el.attachEvent) {
- el.attachEvent("on" + evname, func);
- }
- else if (el.addEventListener){
- el.addEventListener(evname, func, true);
- }
- };
- window.onload = function(){
- addEvent(document.getElementById('bt'), 'click', function(){
- fun1(event);
- });
- }
- </script>
- <input type="button" id="bt" value="Click me" />
这个例子在firefox下event为undefined。
经测试发现函数
function(){
fun1(event);
}
虽然没有带参数, 但arguments.length却是为1。arguments[0]正是我们要的event。
下面这个例子在ie和Firefox都可以通过
JavaScript代码
- <script type="text/javascript">
- function fun1(e){
- var ev = window.event || e;
- alert(ev);
- }
- function addEvent(el, evname, func) {
- if (el.attachEvent) {
- el.attachEvent("on" + evname, func);
- }
- else if (el.addEventListener){
- el.addEventListener(evname, func, true);
- }
- };
- window.onload = function(){
- addEvent(document.getElementById('bt'), 'click', function(){
- fun1(arguments[0]);
- });
- }
- </script>
- <input type="button" id="bt" value="Click me" />