当我关闭浏览器时,我正试图在h:commandButton中模拟onclick事件。
这是我的代码:
<body onBeforeUnload='closingBrowser()'>
function closingBrowser() {
document.getElementById('main:commandButtonHidden').onclick();
return false;
}
这个javascript函数调用与我的按钮相关联的函数,该函数具有以下定义:
<h:commandButton id="commandButtonHidden"
value="checkPasswords().Login"
onclick="javascript:checkPasswords();" actionListener="#{init.closingBrowser}" />
和checkPasswords():
function checkPasswords() {
alert("checkPasswords");
return true;
}
这个函数没有任何意思,因为我想要的是我的actionListener中的函数。
这在IE和FF中非常完美,但在Chrome或Opera中却不行。
警告总是在所有浏览器中触发,但是actionListener NO,只是在IE和FF中,它没有任何意义。
有人对此有所了解。
由于
答案 0 :(得分:2)
如果有人碰到这个寻找框架不可知方式来解雇任何HTML和鼠标事件,请查看此处:How to simulate a mouse click using JavaScript?
答案 1 :(得分:0)
狂野猜测:尝试触发点击事件,而不是访问onclick
回调。
document.getElementById('main:commandButtonHidden').click();
答案 2 :(得分:0)
我在搜索此问题的解决方案时发现了这一点。我希望对你来说不是太晚,但我做到了:
(使用jQuery)
var element = jQuery("#" + elementid);
if (element.length > 0 && element[0].click == null)
{
element[0].click = function ()
{
var mouseEvent = document.createEvent("MouseEvent");
mouseEvent.initMouseEvent("click", true, true, window, 0,
element.offset().left + window.screenX, element.offset().top + window.screenY,
element.offset().left, element.offset().top, false, false, false, 0, null);
element[0].dispatchEvent(mouseEvent);
};
}
如果您不想使用jQuery(并且您不需要客户端/屏幕x / y co-ords)
只需尝试:
var mouseEvent = document.createEvent("MouseEvent");
mouseEvent.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, 0, null);
var element = document.getElementById('main:commandButtonHidden');
element.dispatchEvent(mouseEvent);
来自:https://developer.mozilla.org/en/DOM/document.createEvent