1. 在asp.net實用技巧(1) 中提到了如何刷新父頁面,那么如果要刷新父頁面的父頁面的父頁面了?那就是刷新祖先頁面refreshancestorpage。

refreshancestorpage#region refreshancestorpage
/**//// <summary>
/// 刷新指定的祖先頁面,注意是"祖先頁面"
/// </summary>
public static void refreshancestorpage(httpresponse response ,string targetpagetitle ,bool isclosecurpage)//targetpagetitle 目標頁面的title
{
stringbuilder scriptstring = new stringbuilder();
scriptstring.append("<script language = javascript>");
scriptstring.append("var p = window ;");
scriptstring.append(string.format("while(p.document.title != '{0}')" ,targetpagetitle));
scriptstring.append("{");
scriptstring.append("p = p.opener ;");
scriptstring.append("}");
scriptstring.append("p.focus();");
scriptstring.append("p.refresh();");
if (isclosecurpage )
{
scriptstring.append( " window.focus();" );
scriptstring.append( " window.opener=null;" );
scriptstring.append( " window.close(); " );
} 
scriptstring.append("</"+"script>");
response.write(scriptstring.tostring());
}

/**//*
需要在father頁面的html中添加如下腳本(在header中):
<script language="javascript">
function refresh()
{
this.location = this.location;
}
</script>
*/
#endregion2.如何刷新祖先頁面中的某個frame中的page了?

refreshframeinancestorpage#region refreshframeinancestorpage
/**//// <summary>
/// 刷新指定的祖先頁面中的某個框架的內部頁面
/// </summary>
public static void refreshframeinancestorpage(httpresponse response ,string ancestortitle ,string framename ,string targeturl ,bool isclosecurpage)//targetpagetitle 目標頁面的title
{
stringbuilder scriptstring = new stringbuilder();
scriptstring.append("<script language = javascript>");
scriptstring.append("var p = window ;");
scriptstring.append(string.format("while(p.document.title != '{0}')" ,ancestortitle));
scriptstring.append("{");
scriptstring.append("p = p.opener ;");
scriptstring.append("}");
scriptstring.append("p.focus();");
scriptstring.append(string.format("p.{0}.location = '{1}';" ,framename, targeturl));
if (isclosecurpage )
{
scriptstring.append( " window.focus();" );
scriptstring.append( " window.opener=null;" );
scriptstring.append( " window.close(); " );
} 
scriptstring.append("</"+"script>");
response.write(scriptstring.tostring());
}
#endregion3.如何刷新本頁面中的其它框架了?

refreshtargetframeinsamepage#region refreshtargetframeinsamepage
/**//// <summary>
/// 從某一框架刷新同一頁面中的任意一框架(包括自己所處的框架)
/// </summary>
public static void refreshtargetframeinsamepage(httpresponse response ,string framename ,string targeturl)
{
string scripstr = string.format("<script language ='javascript'> window.parent.{0}.location= '" ,framename) +targeturl + "'";
scripstr += "</"+"script>" ;
response.write(scripstr) ;
}
#endregion 4.如何調用祖先頁面的腳本?

callancestorscriptmethod#region callancestorscriptmethod
/**//// <summary>
/// 調用祖先頁面中的某個框架內部page的腳本 ,如果是調用祖先頁面的腳本,targetframename傳入null
/// </summary>
public static void callancestorscriptmethod(httpresponse response ,string targetpagetitle ,string targetframename ,string methodname ,string[] parastrs)
{
stringbuilder scriptstring = new stringbuilder();
scriptstring.append("<script language = javascript>");
scriptstring.append("var p = window ;");
scriptstring.append(string.format("while(p.document.title != '{0}')" ,targetpagetitle));
scriptstring.append("{");
scriptstring.append("p = p.opener ;");
scriptstring.append("}");
if(targetframename != null)
{
if(parastrs == null)
{
scriptstring.append(string.format("p.frames['{0}'].{1}() ;" ,targetframename ,methodname ));
}
else
{
string rparastr = string.format("'{0}'" ,parastrs[0]) ;
for(int i=1 ;i<parastrs.length ;i++)
{
rparastr += string.format(", '{0}'" ,parastrs[i]) ;
}
scriptstring.append(string.format("p.frames['{0}'].{1}({2}) ;" ,targetframename ,methodname ,rparastr));
}
}
else
{
if(parastrs == null)
{
scriptstring.append(string.format("p.{0}() ;" ,methodname ));
}
else
{
string rparastr = string.format("'{0}'" ,parastrs[0]) ;
for(int i=1 ;i<parastrs.length ;i++)
{
rparastr += string.format(", '{0}'" ,parastrs[i]) ;
}
scriptstring.append(string.format("p.{0}({1}) ;" ,methodname ,rparastr));
}
} 
scriptstring.append("</"+"script>");
response.write(scriptstring.tostring());
}
#endregion
5.如何調用本頁面中其它框架page的腳本?

calltargetframescriptmethodinsamepage#region calltargetframescriptmethodinsamepage
/**//// <summary>
/// 調用本頁面中其它框架內部page的腳本 ,
/// </summary>
public static void calltargetframescriptmethodinsamepage(httpresponse response ,string targetframename ,string methodname ,string[] parastrs)
{
stringbuilder scriptstring = new stringbuilder();
scriptstring.append("<script language = javascript>");
if(parastrs == null)
{
scriptstring.append(string.format("window.parent.{0}.{1}() ; ;" ,targetframename ,methodname));
}
else
{
string rparastr = string.format("'{0}'" ,parastrs[0]) ;
for(int i=1 ;i<parastrs.length ;i++)
{
rparastr += string.format(", '{0}'" ,parastrs[i]) ;
}
scriptstring.append(string.format("window.parent.{0}.{1}({2}) ; ;" ,targetframename ,methodname ,rparastr));
}
scriptstring.append("</"+"script>");
response.write(scriptstring.tostring());
}
#endregion可見上述這些功能都是通過腳本完成的,如果對腳本不熟悉,是不可能做好的!
新聞熱點
疑難解答
圖片精選