Javascript 部分回发后RegisterClientScriptCode不工作

Javascript 部分回发后RegisterClientScriptCode不工作,javascript,asp.net,sharepoint-2010,updatepanel,Javascript,Asp.net,Sharepoint 2010,Updatepanel,以下代码行位于SharePoint网站的用户控件中 ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "jquery144", "<script type=\"text/javascript\" src=\"/_layouts/Unicre.Web.RUOnline.Controlos/Scripts/jquery-1.4.4.min.js\"></script>", false); ScriptM

以下代码行位于SharePoint网站的用户控件中

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "jquery144", "<script type=\"text/javascript\" src=\"/_layouts/Unicre.Web.RUOnline.Controlos/Scripts/jquery-1.4.4.min.js\"></script>", false);
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "javascriptgeral", "<script type=\"text/javascript\" src=\"/_layouts/Unicre.Web.RUOnline.Controlos/Scripts/javascript.js\"></script>", false);
ScriptManager.RegisterClientScriptBlock(this,this.GetType(),“jquery144”,“false”);
ScriptManager.RegisterClientScriptBlock(this,this.GetType(),“javascriptgeral”,“false”);
为什么不起作用?在响应中生成的HTML中,我也找不到相应的脚本标记

问题与更新面板有关。部分回发后,Javascript停止工作。它不应该与上面的代码一起工作吗


(我也尝试了RegisterClientScriptInclude方法,但结果相同。)

这对部分回发不起作用。您需要在
页面\u Load
上注册脚本。在用户控件中,附加到Load事件并从该处理程序调用ScriptManager.RegisterClientScriptBlock()

在部分回发之后,Javascript停止工作

UpdatePanel部分回发是UpdatePanel内容的DOM更新。这意味着前面的内容将丢失,因此该
中包含的内联脚本的状态将丢失

有关更多信息,请参阅:

UpdatePanel通过innerHTML DOM属性在客户机上执行其工作。从服务器检索增量,在现有DOM中找到自己,处理内容,然后通过innerHTML分配新内容。。。但内联脚本不是这样工作的。将DOM元素的innerHTML设置为包含脚本块的HTML不会导致执行该脚本

类似地,在UpdatePanel更新上调用ScriptManager.RegisterClientScriptBlock()不会像页面加载一样。您可以将
元素直接添加到UpdatePanel内容中,但它不会执行

更新

您可以通过以下方式在部分回发后调用javascript代码:


函数加载(){
//注册处理程序
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
//此处理程序将在部分回发后执行
函数EndRequestHandler(){
//…任意代码。。。
}
window.onload=加载;

Hey Independen不管问题是什么,这里有一个输入错误:好吧,这很尴尬!我已经看了很长一段时间了,我找不到打字错误。它在哪里?对不起,我的错,一切都很好。只是把斜杠和反斜杠混在一起了。再次抱歉:)抱歉@只是M.凯斯,但我只看到了不起作用的原因。我该怎么做?顺便说一句,我可以执行HelloWorld()之类的内联脚本函数。但是,在本例中,我需要做的是调用一个javascript文件。如何执行此操作?您需要在初始服务器端
页面上调用
ScriptManager.RegisterClientScriptBlock()
(请记住,每次都需要执行此操作,因此不要检查
!IsPostBack
)。然后,如果有特定的函数只想在UpdatePanel更新后运行,请使用我上面更新的答案中所示的
add\u endRequest()
方法。没错,我已经在使用该回调。问题是我必须创建重复的代码,这就是为什么我更喜欢引用JavaScript文件,但至少问题已经解决了。谢谢我可能弄错了,但我认为在更新面板上使用RegisterClientScriptBlock是可能的,您提供的文章的意思可能是,您不能在更新面板中添加硬编码的脚本标记,但无论如何RegisterClientScriptBlock都可以工作。
<script>
function load() {
   //register the handler
   Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
}
//this handler will execute after a partial postback
function EndRequestHandler(){
   //...arbitrary code...
}
window.onload = load; 
</script>