On 2/1/06, Laurie Harper <[EMAIL PROTECTED]> wrote:
> Hi, I need to do the equivalent of clicking a commandLink in Javascript;
> in other words, I need to write an onClick handler that does the same
> thing as clicking on a commandLink would. Is there a standard way to do
> that? I'm not sure if the JSF spec includes any specifics on client-side
> APIs.


I have found that it is different for IE vs. Netscape/Firefox. I'm not
a js expert but it works.

This is how I invoke a hidden commandLink in a table row...

<tr onclick="invokeRowLink(this);">
....commandLink
</tr>


function invokeRowLink(row) {
        if (navigator.appName.indexOf("Netscape") != -1) {
                invokeRowLinkNS(row);
        } else {
                invokeRowLinkIE(row);
        }
}


function doClickNS(anchor) {
        var evt = anchor.ownerDocument.createEvent('MouseEvents');
        evt.initMouseEvent('click', false, true,
anchor.ownerDocument.defaultView, 1, 0, 0, 0, 0, false, false, false,
false, 0, null);
        anchor.dispatchEvent(evt);
}



function invokeRowLinkNS(row) {
        if (row.hasChildNodes) {
                tds = row.getElementsByTagName("td");
                for(x=0;x<tds.length;x++){
                        if (tds[x].hasChildNodes) {
                                childs = tds[x].getElementsByTagName("a");
                                        for(y=0;y<childs.length;y++){
                                                if (childs[y].onclick != null) {
                                                        doClickNS(childs[y]);
                                                        return;
                                                }
                                        }
                        }
                }
        }
}


function invokeRowLinkIE(row) {
        if (row.hasChildNodes) {
                tds = row.children;
                for(x=0;x<tds.length;x++){
                        if (tds[x].hasChildNodes) {
                                childs = tds[x].children.tags("A");
                                for(y=0;y<childs.length;y++){
                                        if (childs[y].onclick != null) {
                                        childs[y].click();
                                                return;
                                        }
                                }
                        }
                }
        }
}

Reply via email to