2010-10-12 3 views
1

J'essaie de simuler un événement onclick dans un h: commandButton lorsque je ferme mon navigateur.Simuler des problèmes d'événement onclick en chrome

Voici mon code:

<body onBeforeUnload='closingBrowser()'> 


function closingBrowser() { 
    document.getElementById('main:commandButtonHidden').onclick(); 
    return false; 
} 

Cette fonction javascript appelle la fonction associée à mon bouton qui a cette définition:

<h:commandButton id="commandButtonHidden" 
    value="checkPasswords().Login" 
    onclick="javascript:checkPasswords();" actionListener="#{init.closingBrowser}" /> 

et checkPasswords():

function checkPasswords() { 
    alert("checkPasswords"); 
    return true; 
} 

Cette fonction n'a rien d'intéressant car ce que je veux c'est la fonction dans mon actionListener.

Cela fonctionne parfaitement dans IE et FF, mais pas en chrome ou Opera.

L'alerte est toujours déclenchée dans tous les navigateurs, mais l'actionListener NO, juste dans IE et FF, et il n'a aucun sens.

Quelqu'un sait quelque chose à ce sujet.

Merci

+0

ce qui est h: commandButton? –

+0

Pourriez-vous être plus explicite? Y a-t-il quelque chose qui ne va pas. Ce code fonctionne bien dans IE et FF, l'actionListener n'est pas tiré en chrome et Opera, cependant si je clique directement sur le bouton fonctionne parfaitement dans 4 navigateurs. Merci. –

Répondre

0

devinettes sauvage: essayez le tir d'un événement de clic, au lieu d'accéder à la fonction de rappel onclick.

document.getElementById('main:commandButtonHidden').click(); 
0

J'ai trouvé cela en cherchant la solution à ce problème. J'espère que son pas trop tard pour vous, mais je l'ai fait:

(avec 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); 
    }; 
} 

si vous ne voulez pas utiliser jQuery (et vous n'avez pas besoin client/écran x/y co-ords)

simplement essayer:

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); 

de: https://developer.mozilla.org/en/DOM/document.createEvent