请教:火狐浏览器如何读事件源的类型名称?下面函数在IE下正常,但是在FF下srcElement.tagName名称读取不到?
也就是FF可能不支持tagName属性?
这问题如何解决啊?谢了。
WatchClick = function(params) {
var event = window.event, srcElement;
srcElement = event.target || event.srcElement; //alert(srcElement.nodeName);
// 检查对象类型: 用户行为调查主要是针对链接/图片/输入框/选择框 有效
if (srcElement.tagName == "A" || srcElement.tagName == "IMG" || srcElement.tagName == "INPUT" || srcElement.tagName == "SELECT") {
var hottag = "";
switch (srcElement.tagName) {
case "A":
hottag = "<A href=" + srcElement.href + ">" + srcElement.innerHTML + "</a>";
break;
case "IMG":
hottag = "<IMG src=" + srcElement.src + ">"; break;
case "INPUT":
hottag = "<INPUT type=" + srcElement.type + " value=" + srcElement.value + ">";
break;
case "SELECT":
hottag = "SELECT";
break;
}
...
}
也就是FF可能不支持tagName属性?
这问题如何解决啊?谢了。
WatchClick = function(params) {
var event = window.event, srcElement;
srcElement = event.target || event.srcElement; //alert(srcElement.nodeName);
// 检查对象类型: 用户行为调查主要是针对链接/图片/输入框/选择框 有效
if (srcElement.tagName == "A" || srcElement.tagName == "IMG" || srcElement.tagName == "INPUT" || srcElement.tagName == "SELECT") {
var hottag = "";
switch (srcElement.tagName) {
case "A":
hottag = "<A href=" + srcElement.href + ">" + srcElement.innerHTML + "</a>";
break;
case "IMG":
hottag = "<IMG src=" + srcElement.src + ">"; break;
case "INPUT":
hottag = "<INPUT type=" + srcElement.type + " value=" + srcElement.value + ">";
break;
case "SELECT":
hottag = "SELECT";
break;
}
...
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>如何获取事件触发源(兼容IE和FireFox)</title>
<meta name="generator" content="editplus" />
<meta name="author" content="" />
<meta name="keywords" content="" />
<meta name="description" content="" />
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=gb2312">
<script type="text/javascript">
function ClickMe(e)
{
var src = e.target || window.event.srcElement;
alert(src.tagName);
}
function ClickMe2()
{
var e = arguments[0] || window.event;
var src = e.srcElement || e.target; // src 就是事件的触发源
alert(src.tagName);
}
</script>
</head>
<body>
<button onclick="ClickMe(event)">测试</button>
<button onclick="ClickMe2(event)">测试2</button>
</body>
</html>
所以,onclick事件
句柄如果为onclick=doClick();
那么doClick函数的第一个参数必为event而IE,则是把事件保存在window.event中
对于特殊的Chrome,则两种都支持。
所以全浏览器兼容的代码应该是这样写的
<input type="button" onclick="doClick(event);">
function doClick(e) {
var event = e || window.event;
var srcElement = e.target || e.srcElement;
}