Default.aspx
<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>
问题:如何从testFunction获取Menu1 id的引用?
谢谢,
巫毒
答案 0 :(得分:1)
框架文件技巧因此:
var frm = top.frames[0];
var doc = frm.contentDocument || frm.Document; // Document (capitalized) in IE, contentDocument otherwise
var menu = doc.getElementById("Menu1");
但是,如果Menu1具有不同的ClientID,您可以尝试以下路线:
MenuPage.aspx
<script type="text/javascript">
function getMenu() {
return document.getElementByID("<%=Menu1.ClientID%>");
}
</script>
AnotherPage.aspx
var menu = top.frames[0].getMenu();
答案 1 :(得分:0)
您可以使用一段ASP.NET服务器代码来完成此操作。请注意,这假设您的javascipt函数包含在Default.aspx的标记中(与框架相同的页面)。
<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>