Fab*_*iro 4 javascript asp.net updatepanel sharepoint-2010
以下代码行位于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);
Run Code Online (Sandbox Code Playgroud)
为什么不起作用?我也无法在响应中生成的HTML中找到相应的脚本标记.
问题与更新面板有关.部分回发后,Javascript停止工作.它不应该与上面的代码一起使用吗?
(我也尝试过RegisterClientScriptInclude方法但结果相同.)
这不适用于部分回发.您需要注册脚本Page_Load.在用户控件中,附加到Load事件并从该处理程序调用ScriptManager.RegisterClientScriptBlock().
部分回发后,Javascript停止工作
UpdatePanel部分回发是UpdatePanel <div>内容的DOM更新.这意味着先前的内容丢失,因此包含在其中的内联脚本的状态将<div>丢失其状态.
有关更多信息,请参见此处
UpdatePanel通过innerHTML DOM属性在客户端上完成工作.从服务器检索增量,在现有DOM中查找,处理内容,然后通过innerHTML分配新内容....但是内联脚本不能以这种方式工作.将DOM元素的innerHTML设置为包含脚本块的HTML不会导致该脚本执行.
同样,在UpdatePanel更新上调用ScriptManager.RegisterClientScriptBlock()不会像页面加载那样.您可以将<script>元素直接添加到UpdatePanel内容,但不会执行.
更新
您可以通过向PageRequestManager添加endRequest处理程序,在部分回发后调用javascript代码:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6655 次 |
| 最近记录: |