我注入(inject)正确吗?
string myScriptName = "EventScriptBlock";
string myScript = string.Empty;
//Verify script isn't already registered
if (!ClientScript.IsClientScriptBlockRegistered(myScriptName))
{
Response.Write('b');
myScript = "\n<script type=\"text/javascript\" language=\"Javascript\" id=\"EventScriptBlock\">\n";
myScript += "alert('hi');";
myScript += "\n\n </script>";
ClientScript.RegisterClientScriptBlock(this.GetType(), myScriptName, myScript);
}
这是在我的
Page_Load
中,但是我再也没有看到警报,也没有JavaScript错误。 最佳答案
您可以使用registerstartupscript而不是registerclientscriptblock!
RegisterStartupScript
使用RegisterStartupScript时,它将在页面中的所有元素之后(在表单的end标签之前)呈现脚本。这使脚本能够调用或引用页面元素,而不会在页面的DOM中找不到它们
RegisterClientScriptBlock
当您使用RegisterClientScriptBlock时,脚本将在Viewstate标记之后但在任何页面元素之前呈现。由于这是一个直接脚本(不是可以调用的函数,因此它将被浏览器立即执行。但是在此阶段,浏览器无法在Page DOM中找到标签,因此您应该收到“找不到对象”错误
Difference between registerstartupscript and registerclientscriptblock
protected void Page_Load(object sender, System.EventArgs e)
{
string myScript = "\n<script type=\"text/javascript\" language=\"Javascript\" id=\"EventScriptBlock\">\n";
myScript += "alert('hi');";
myScript += "\n\n </script>";
Page.ClientScript.RegisterStartupScript(this.GetType(), "myKey", myScript, false);
}
关于c# - 从文件后面的asp.net代码注入(inject)Javascript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7046565/