模拟chrome中的onclick事件问题

时间:2010-10-12 19:45:42

标签: javascript

当我关闭浏览器时,我正试图在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中,它没有任何意义。

有人对此有所了解。

由于

3 个答案:

答案 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