2009-10-15 5 views
0

J'ai 2 pages dans un frameset, dans la première page j'ai une fonction Javascript, la seconde est un formulaire asp.net avec un bouton, la chose est que j'ai besoin pour appeler la fonction Javascript dans la première page lorsque l'utilisateur clique sur le bouton:Appelez la fonction Javascript de la page asp.net dans un cadre

J'essaie avec:

ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script language=JavaScript>parent.frames[0].Function('parameter')</script>"); 

Il y a une alerte (« ... »); dans la fonction mais quand je l'appelle je ne vois rien, apparemment la fonction n'est pas exécutée.

¿Comment puis-je appeler la fonction? Merci pour l'aide & conseille.

+1

Etes-vous sûr que la première page est chargée au moment où la deuxième page appelle la fonction? –

+0

Oui, j'ai essayé avec HTML et ça marche bien. – doc

+0

Vous avez essayé en HTML avec le script inline ou le script est également chargé via un autre fichier? Essayez de construire votre version HTML aussi proche que possible de l'ASPX. Comparez avec les codes ASPX rendus aussi. –

Répondre

1

Essayez d'utiliser FireBug (pour Firefox, ou utilisez FireBug Lite pour d'autres navigateurs) pour voir le HTML et le script réels de chaque image.
Une fois que vous avez conclu que le code a été créé correctement dans ASP.net, continuez à utiliser FireBug pour voir où votre code de script se trompe en utilisant les points d'arrêt.
Si vous voulez une idée plus rapide, essayez d'utiliser des tests dans le code que vous mettez avant d'appeler la fonction, essayez ceci:

alert(parent.frames.length); 
alert(parent.frames[0].Function); 
parent.frames[0].Function('parameter'); 
0

Merci beaucoup, Dror, pour moi obtenir passé un tracas de temps!

Puis-je ajouter qu'il ressemble, on peut utiliser le nom du cadre en plus de l'index (pardonnez-moi, les gens, si cela est évident):

parent htm:
        :
    <frameset rows="120,*">
        <frame name="OverviewFrame" id="OverviewFrame" src="eoverview.htm">
        <frame name="LegendFrame" id="LegendFrame" src="">
    </frameset>
    <frameset cols="50%,50%">
        <frame name="ControlsFrame" id="ControlsFrame" src="zoomcontrols.htm">
        <frame name="InsetControlsFrame" id="InsetControlsFrame" src="insetcontrols.htm">
    </frameset>
        :

cadre htm (insetcontrols.htm):
    parent.frames['OverviewFrame'].enableSync(false);

(où eoverview.htm contient la fonction enableSync(bool))

testé sur FF3.6.3, Chrome 4.1.249. 1064, Safari 4.0.5, Opera 9.80, IE 8, mode de compatibilité IE 8

+0

Heureux que ça t'a aidé :) – Dror

Questions connexes