2010-12-05 21 views
1

le site dans le document principal comprend un fichier JavaScript en utilisant la déclaration suivante:Comment appeler un lien javascript à partir d'une barre latérale de Firefox?

<script src="/somescript.js" type="text/javascript"></script> 

Il y a aussi un lien sur le site Web qui exécute une fonction javascript définie dans le fichier incuded. Il ressemble à:

<a href="javascript:functionname('parm1', 'parm2');" <img src="http://.../button.png" id="pushme" alt="" height="80" width="200"> </a> 

Comment puis-je exécuter functionname('parm1', 'parm2'); dans le contexte du document principal d'une barre latérale firefox? Ce que j'ai essayé jusqu'ici est: mainWindow[functionname] pour obtenir un pointeur vers la fonction js, mais il retourne toujours null, même si la page a été complètement chargée. (Est-ce parce que la source javascript est incluse dans un fichier séparé?) contentDocument.getElementById("parentdiv").getElementsByTagName('a')[0].click(); pour appeler la méthode, mais un clic ne semble pas disponible. (Y a-t-il un moyen de faire clic sur le lien()?)

Ou existe-t-il un autre moyen d'exécuter la fonction js?
Merci pour votre soutien!

+0

peut-être dupliquer de http://stackoverflow.com/questions/4320025/how-to-let-a-sidebar-execute-javascript-code-from-the-main-document –

+0

Les deux questions ont été inspirées par le même problème et les deux questions reçoivent une réponse valable. Je vous remercie. – Nanadada

Répondre

1

Vous ne pouvez pas obtenir un handle à la fenêtre car ce n'est pas une variable d'instance de la fenêtre en cours. Vous pouvez obtenir une référence à la fenêtre en utilisant window.open() et en stockant le handle résultant dans la variable.

Ce que j'ai essayé jusqu'à présent est: mainWindow [functionname] pour obtenir un pointeur à la fonction js, mais il retourne toujours nulle, même si la page a été chargée complètement. (Est-ce arrive parce que la source javascript est inclus dans un fichier séparé?

Peu importe où le fichier est inclus à partir, la fonction se met en place dans l'esprit du navigateur lorsque sa définition est exécutée.

pour faire le lien « cliquable », vous pouvez simplement l'appeler avec la poignée de fenêtre:.

var myWindow = window.open("foo.html"); 

<a href="javascript:myWindow.functionname('parm1', 'parm2');"> 

Bien sûr, nous ne devrions pas utiliser javascript en ligne, mais son ok pour un exemple rapide :)