2010-06-15 3 views
3

J'ai un href à partir de laquelle je donne un popup, et je veux l'activer dans onload de mon corps. J'utilise document.getElementbyId("myelement").click() qui fonctionne bien dans IE mais Firefox ne le supporte pas. Je sais que .click() ne sera pas supporté par Firefox, mais je n'ai pas d'autre moyen de le faire.Alternative pour la méthode .click() dans Firefox

Pouvez-vous suggérer une solution de contournement qui fonctionne dans IE ainsi que dans FF?
Merci d'avance.

+0

* Je sais que '.click()' ne sera pas supporté par Firefox * Une référence serait bien ... –

Répondre

6

Vous pouvez faire comme Alsciende suggère, ou si vous avez besoin de l'objet d'événement, vous pouvez utiliser dispatchEvent pour déclencher un gestionnaire d'événements:

document.body.onload = function() { 
    var element = document.getElementById("element"); 

    if ("click" in element) 
     element.click(); 
    else if ("dispatchEvent" in element) { 
     var evt = document.createEvent("MouseEvents"); 
     evt.initMouseEvent("click", true, true, window, 
      0, 0, 0, 0, 0, false, false, false, false, 0, null); 
     element.dispatchEvent(evt); 
    } 
} 

Il est parfois utile d'utiliser un cadre, comme jQuery, pour gérer ces types d'incohérences de navigateur pour vous. Plus ou moins, le même code jQuery serait:

$('#element').click(); 
2

Créez une fonction qui ouvre la fenêtre contextuelle et utilisez cette fonction dans le gestionnaire body onload ainsi que dans le gestionnaire de liens onclick.

function openPopup() { 
    window.open("..."); 
    return false; 
} 

<body onload="openPopup()"> 
... 
<a id="myelement" href="#" onclick="openPopup()">...</a> 
... 
</body> 
0

Pour que cela aide quelqu'un, je l'ai vu dans l'utilisation dans beaucoup de code, mais ne peut garantir si cela fonctionne dans votre cas, voici ce que j'ai essayé trop -

'LeftClick .divname': '_functionname',

Je ne sais pas. mais cela pourrait être en utilisant quelque chose que js a souligné. J'utilise ceci dans une application backbone qui a le support de js underscore.

Questions connexes