2010-09-10 5 views
0

Default.aspxFonction javascript aide à obtenir l'élément par ID à partir d'un src d'un cadre?

<html> 
    <frameset id="MainFrameset" rows="78,*" border="0" framespacing="0" frameborder="0"> 
     <frame application="yes" name="menuFrame" src="<% = GetMenuFrameSrcUrl() %>" scrolling="no" noresize> 
    </frameset> 
</html> 

Default.aspx.cs

public string GetMenuFrameSrcUrl() 
{ 
    return "http://localhost/Application1/Pages/MenuPage.aspx" 
} 

MenuPage.aspx

<%@ Register TagPrefix="customControl" TagName="Menu" Src="/Controls/Menu.ascx" %> 
<html> 
    <body bottommargin="0" leftmargin="0" topmargin="0" rightmargin="0"> 
     <form id="Form1" method="post" runat="server"> 
      <customControl:menu id="Menu1" runat="server"> 
      </customControl:menu> 
     </form> 
    </body> 
</html> 

AnotherPage.aspx

<head id="Head1" runat="server"> 
    <script type="text/javascript"> 
     function testFunction(args, name) { 

      //Need help here...How can I get the reference of Menu1 id? 

      //I can get this: 
      alert(top.frames[0].name);  //menuFrame 
      //But don't know how I can take it further to get some Element ID from the MenuPage.aspx which is the source of this Frame??? 
     } 
    </script> 
</head> 

Question: Comment puis-je obtenir la référence de l'ID Menu1 depuis testFunction?

Merci,

Voodoo

Répondre

1

Le document cadre astuce est donc:

var frm = top.frames[0]; 
var doc = frm.contentDocument || frm.Document; // Document (capitalized) in IE, contentDocument otherwise 
var menu = doc.getElementById("Menu1"); 

Mais, si Menu1 a un ClientID différent, vous pouvez essayer cette voie:

MenuPage.aspx 

<script type="text/javascript"> 
function getMenu() { 
    return document.getElementByID("<%=Menu1.ClientID%>"); 
} 
</script> 

AnotherPage.aspx 

var menu = top.frames[0].getMenu(); 
0

Vous pouvez utiliser un extrait de code serveur ASP.NET pour ce faire. Notez que cela suppose que votre fonction javascipt est contenue dans la balise de Default.aspx (la même page que les cadres).

<head id="Head1" runat="server"> 
    <script type="text/javascript"> 
     function testFunction(args, name) { 

      var menu1 = document.getElementById('<%=Menu1.ClientID %>'); 
      //note I've never done this with framesets, so it might be 
      top.frames[0].document.getElementById('<%=Menu1.ClientID %>'); 
     } 
    </script> 
</head> 
+0

L'hypothèse que cette fonction est en défaut .aspx n'est pas correct. La fonction doit être dans une autre page, en particulier 'AnotherPage.aspx' – VoodooChild

Questions connexes