JavaScript 获取事件对象的一个注意点【问题】
JavaScript 获取事件对象的一个注意点
2009-7-24 上午
- JS/Ajax/AS/Flex
- event
- javascript
平时我们获取事件对象一般写法如下:
function
getEvent
(
event
)
{
return
event
||
window
.
event
// IE:window.event
}
如果没有参数,也可写成(非IE :事件对象会自动传递给对应的事件处理函数,且为第一个参数):
function
getEvent
()
{
return
arguments
[
0
]
||
window
.
event
// IE:window.event
}
这样的写法在除 Firefox(测试版本:3.0.12,下同) 外的浏览器上运行都不会有问题,但 Firefox
为什么例外呢?让我们这样一种情形:
<button
id
=
"btn"
onclick
=
"
foo
()
"
>
按钮
</button>
<script>
function
foo
(){
var
e
=
getEvent
();
alert
(
e
);
}
</script>
运行结果在 Firefox 中是 undefined
,为什么呢?
在 Firefox 中调用其实是这样的,先调用执行的是:
function
onclick
(
event
)
{
foo
();
}
然后调用执行的是:
function
foo
(){
var
e
=
getEvent
();
alert
(
e
);
}
会发现在 Firefox 下 onclick
=
"foo()"
中的 foo
()
无法自动传入事件对象参数,而默认传递给了系统生成的
onclick 函数,那本例我们可以通过 getEvent
.
caller
.
caller
.
arguments
[
0
]
获得事件对象。
因此,我们的 getEvent 可以优化成(参照 yui_2.7.0b 中的 event/event-debug.js 中 getEvent
方法):
function
getEvent
(
event
)
{
var
ev
=
event
||
window
.
event
;
if
(!
ev
)
{
var
c
=
this
.
getEvent
.
caller
;
while
(
c
)
{
ev
=
c
.
arguments
[
0
];
if
(
ev
&&
(
Event
==
ev
.
constructor
||
MouseEvent
==
ev
.
相关文档:
页面提交数据一般有两种方法:get,post。post就是所谓的form提交,使用视图;get是通过url提交。
Get方法一般用后台代码(如asp,asp.net)获得参数,代码很简单:Request.QueryString["id"];即可获取。
有些时候需要直接在前台获取url参数,要用到javascript,js没有直接获取url参数的方法,那么,我们如何通过js ......
如果想从网页提交参数到服务器,第一个想到的就是Http的Form标签。它将用户在客户端网页填写的数据通过HTTP Post,提交到服务端。这些提交的数据被放在HTTP消息的body里面,这样,用户提交的数据理论上是没有长度限制的。如果服务端用的是J2EE,HttpServletRequest可以非常轻松得取到所有参 ......
最近这段时间一直在搞前端JavaScript,以前总觉得JS没什么搞头,经过这一段的应用,才发现Js里面的东西真的很深很深的,不然为什么各大门户网站都招一批JS工程师呢。
闲话不说,现在看看JavaScript
里的闭包
。
要成为高级 JavaScript 程序员 ......
JavaScript操作服务器控件之Gridview控件
1.JavaScript脚本如下:
<script language="javascript" type="text/javascript">
function gridviewControl()
{
//获取GridView的客户端元素
  ......
<html>
<head>
<title>changePage</title>
</head>
<body>
<table id="pic" cellpadding="0" cellspacing="0" border="1" width="200" height="100" bordercolor="red">
<tr>
<td>picture chanage!</td>
</tr>
</table>
< ......