开发者问题收集

这个函数参数怎么会未定义呢?

2012-04-27
406

我试图复制此“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,与 fiddle 演示不同。

非常感谢您的帮助,我真的被这个问题难住了。

2个回答

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

document.getElementById('bigBtn').addEventListener("click", yourFunction, false);
Alexander Pavlov
2012-04-27

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

2012-04-27