2012-04-27 28 views
0

我试图复制这一“onclickout模拟器”脚本在这里看到:这个函数参数是如何定义的?

http://jsfiddle.net/C9CL3/

正如你所看到的,它工作正常(在所有我已经测试了它的浏览器 - 所以这就我所知,这不是浏览器兼容性问题)。

溶液中的代码如下:

document.getElementById('bigBtn').onclick = function(event) { 
     alert('button clicked'); 
     if (event.cancelBubble) //THIS LINE GIVES 'EVENT IS UNDEFINED' ERROR 
      event.cancelBubble = true; 
     else 
      event.stopPropagation(); 
    } 

这pageLoad的被发现()。

正如您所看到的,由于事件未定义,我得到event.cancelBubble行的意外错误。我无法为我的生活找出原因。

注意:由于浏览器兼容性的原因,我正在以这种方式测试cancelBubble与小提琴演示的不同之处。

非常感谢任何帮助,真的停留在此。

+1

好吧,你说这不是一个浏览器问题,但事件将在IE的早期版本(因为他们使用window.event),而不是定义。所以你总是可以尝试在处理程序的顶部添加它。 if(!event)event = window.event; – GillesC 2012-04-27 11:10:06

+0

在你的小提琴链接中,'event.cancelBubble'是'false',这意味着'event'不是'undefined' – Anji 2012-04-27 11:12:03

+0

@安吉 - 是的,这是预期的 - 就像我说的 - 小提琴链接工作,但在我的解决方案中没有。 – 2012-04-27 12:12:15

回答

0

问题已解决。我不是用这种方式“模拟”onclickout事件,而是简单地将焦点(使用window.hash)设置为出现在“按钮点击”警报位置的菜单,然后处理onblur事件以关闭它。

2

尝试使用DOM2事件模型。相反,使用以下方法注册处理程序:

document.getElementById('bigBtn').addEventListener("click", yourFunction, false); 
+0

Microsoft JScript运行时错误:对象不支持属性或方法'addEventListener' – 2012-04-27 12:17:08

+0

这是一个与JavaScript相关的问题,而不是JScript问题...... :)哪个IE版本?在IE 9之前,你必须使用[attachEvent](https://developer.mozilla.org/en/DOM/element.addEventListener#Legacy_Internet_Explorer_and_attachEvent)。 – 2012-04-27 12:24:52

+0

感谢您的回复。 IE9。这真的让我难堪,不知道为什么这不起作用。 – 2012-04-27 12:30:57

相关问题