[英]Page_Load question
我有這個JavaScript模式,我想用於錯誤報告。 只有在頁面加載之前執行代碼的情況下,一切工作正常。 因此,結果是我的head標記之前有我的JavaScript,這意味着什么都不會執行!
有什么幫助嗎?
public void showError(string error)
{
string script = "<script type=\"text/javascript\">$.facebox.settings.opacity = 0.4;jQuery.facebox(\""+error+"\");</script>";
System.Web.HttpContext.Current.Response.Write(script);
}
順便說一句,我的ShowError方法在名為ErrorDisplay的類中,這就是我的稱呼方式:
string strErr = "error here";
ErrorDisplay myError = new ErrorDisplay();
myError.ShowError(strErr);
基本問題是您需要讓Javascript等待DOM准備就緒后再執行。
解決此問題的最簡單方法是使用ClientScriptManager.RegisterStartupScript方法執行代碼,而不是將其直接添加到頁面中:
public void Page_Load(Object sender, EventArgs e)
{
Type myType = this.GetType();
string script = "<script>alert('Hello World! I am ready.');</script>";
Page.ClientScript.RegisterStartupScript(myType, "StartupScript", script);
}
更新
我的示例基於以下事實:您最初的問題專門針對Page_Load。 但是,只需稍微修改一下代碼即可適合您的示例:
public void ShowError(string error)
{
StringBuilder sb = new StringBuilder();
s.Append("<script type='text/javascript'>");
s.Append("$.facebox.settings.opacity = 0.4;");
s.AppendFormat("$.facebox('{0}');", error);
s.Append("</script>");
Type t = this.GetType();
Page.ClientScript.RegisterStartupScript(t, "ErrorScript", sb.ToString());
}
假設您只是想稍后調用Page_Load中的代碼,請嘗試改用Page_PreRender方法。 您可以在以下位置找到事件列表及其調用順序: http://msdn.microsoft.com/zh-cn/library/aa479007.aspx
這是我實現的方式:
public void ShowError(Page CurrentPage,string error)
{
StringBuilder sb = new StringBuilder();
sb.Append("<script type='text/javascript'>");
sb.Append("$.facebox.settings.opacity = 0.4;");
sb.AppendFormat("jQuery.facebox('{0}');", error);
sb.Append("</script>");
Type t = this.GetType();
CurrentPage.ClientScript.RegisterStartupScript(t, "ErrorScript", sb.ToString());
}
當我調用它(這是“錯誤字符串”)時;
謝謝大家!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.