日期:2014-05-16  浏览次数:20333 次

一个关于javascript的事件响应问题
我需要js实现一个功能,在iframe的页面中。,点击链接后弹出警告,然后给整个页面载入点击事件,再点击页面任何地方都弹出警告。以下代友要在iframe的页面中实现。。请问为什么代码有问题!
JScript code

/*
 *函数功能:动态添加事件
 *参数说明:依次-事件源元素对象,事件类型(如click不带on),事件响应函数)
 *调用举例:addEvent(window, "load", init);
 */
function addEvent(elm, evType, fn)
{
         if (elm.addEventListener){
                 elm.addEventListener(evType, fn, false);
                 return true;
         } else if (elm.attachEvent){
                 var r = elm.attachEvent("on" + evType, fn);
                 return r;
         } else {
                 return false
         }
}
//响应点击事件,显示或是关闭窗口
function sendmessage(a,ev)
{
alert("this a test.");
}
//给网页增加点击事件
function mesgdiv(a,ev)
{
addEvent(window,"click",sendmessage(a,ev));
}

//以下为body中使用

<body>
<a onclick="mesgdiv(this,event)" href="#">showbox</a>
</body>



开始的问题是我需要使用js实现一个功能,在iframe的页面中。点击链接后弹出div,再点击页面中的任何一个地方移除div...

但我测试后发现主要是点击事件的响应问题,即代码只能响应链接点击的事件,而无法响应页面其它地方的事件。所以我简化为以上的代码。

------解决方案--------------------
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
function addEvent(elm, evType, fn)
{
if (elm.addEventListener){
elm.addEventListener(evType, fn, false);
return true;
} else if (elm.attachEvent){
var r = elm.attachEvent("on" + evType, fn);
return r;
} else {
return false
}
}
function sendmessage(a,ev)
{
alert("this a test.");
}
function mesgdiv(a,ev)
{
addEvent(window,"click",sendmessage);
}
</script>
</head>

<body>
<a onclick="mesgdiv(this,event)" href="#">showbox</a>
</body>
</html>
或者这样也可以