Javascript 这个函数参数是如何定义的?
我正在尝试复制这个“onclickout模拟器”脚本,如下所示: 正如您所看到的,它工作得很好(在我测试过的所有浏览器中-所以就我所知,这不是一个浏览器兼容性问题) 我的解决方案中的代码如下所示:Javascript 这个函数参数是如何定义的?,javascript,function,onclick,stoppropagation,Javascript,Function,Onclick,Stoppropagation,我正在尝试复制这个“onclickout模拟器”脚本,如下所示: 正如您所看到的,它工作得很好(在我测试过的所有浏览器中-所以就我所知,这不是一个浏览器兼容性问题) 我的解决方案中的代码如下所示: document.getElementById('bigBtn').onclick = function(event) { alert('button clicked'); if (event.cancelBubble) //THIS LINE GIVES 'EVEN
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行中得到一个意外错误,因为event未定义。我一辈子都搞不懂为什么
注意:出于浏览器兼容性的原因,我以不同于fiddle演示的方式测试cancelBubble
非常感谢您的帮助,我真的很坚持这一点。尝试使用DOM2事件模型。相反,请使用以下方法注册处理程序:
document.getElementById('bigBtn').addEventListener("click", yourFunction, false);
问题解决了。我没有以这种方式“模拟”onclickout事件,而是简单地将焦点(使用window.hash)设置到出现在“按钮点击”警报位置的菜单上,然后处理onblur事件以关闭它。您说这不是浏览器问题,但是,在早期版本的IE中,事件将没有定义(因为他们使用window.event)。因此,您可以始终尝试将其添加到处理程序的顶部。如果(!event)event=window.event;在你的小提琴链接中,
event.cancelBubble
是false
,这意味着event
不是未定义的
@Anji-是的,这是预期的-就像我说的-小提琴链接工作,但在我的解决方案中它不工作。@gillesc-我现在就试试,非常感谢…@gillesc-“Microsoft JScript运行时错误:对象不支持属性或方法'stopPropagation'“Microsoft JScript运行时错误:对象不支持属性或方法‘addEventListener’。这是一个与JavaScript相关的问题,不是JScript问题……:)哪个IE版本?在IE 9之前,您必须使用。谢谢您的回复。IE9。这真的难住我了,一点也不知道为什么这不起作用。