插入的Javascript没有'从updatepanel事件调用时不会显示
Javascript inserted doesn't show up when called from updatepanel event
按钮点击事件没有成功插入脚本的原因有什么线索吗?
下面是非常简单的代码。
C#:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e){
ClientScript.RegisterStartupScript(Page.GetType(), "scriptalert", "<script type='"text/javascript'">alert('testLOAD');</script>;", false);
btnAdd.Click += new EventHandler(btnAdd_Clicked);
}
protected void btnAdd_Clicked(Object sender,System.EventArgs e){
ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type='"text/javascript'">func();</script>;", false);
}
}
HTML:
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<script type="text/javascript">
alert("testSCRIPT");
function func() {
alert("testFUNC");
}
</script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:ScriptManager ID="ToolkitScriptManager1" runat="server" />
<div id="View" style="height: 50%; width:20%; ">
blahblahblah
</div>
<div id="Addd" style="height: 50%; width:100%;">
<asp:UpdatePanel ID="UpdateAdd" runat="server">
<ContentTemplate>
<asp:Button ID="btnAdd" runat="server" Text="Add" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
</asp:Content>
在页面加载时,我会收到两个警报,即"testLOAD"answers"testSCRIPT",但当我按下按钮时,什么都没有发生(应该有第三个警报)。。。已签入调试器,事件被调用并运行,但当我查看页面源时,没有插入任何内容。
我怀疑问题可能出在其他地方,因为复制粘贴到没有母版页(即没有ASP:Content标签)的新页面中是可行的。不过,我在其他脚本插入方面没有遇到任何问题,那么为什么是这次呢?
问题产生于更新面板中的按钮。为了克服这个问题,我认为可以使用ScriptManager而不是ClientScript.RegisterStartupScript方法。应该采取以下措施;
ToolkitScriptManager1.RegisterStartupScript(this, typeof(Page), UniqueID, "<script type='"text/javascript'">func();</script>;", true);
而不是
ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type='"text/javascript'">func();</script>;", false);
您应该尝试类似的东西
string script="alert('something');";
this.ClientScript.registerclientscriptblock(this.GetType(),"scriptfunc",script,true);
或者将函数放置在page_load事件中,并在Button.OnClientClick属性中调用该函数。
我发现了问题^.^
在我插入的脚本中有一个错误的分号,导致它中断:/
ClientScript.RegisterStartupScript(Page.GetType(), "scriptfunc", "<script type='"text/javascript'">func();</script>;", false);
这样一个愚蠢的错误引起了如此多的沮丧。。。对不起,伙计们!
相关文章:
- angularjs调用事件中控制器的一个函数
- CSS + jQ插件阻止AJAX调用/事件侦听器工作
- 如何使用webbrower对象中的脚本调用C#事件
- API Google Maps Javascript在上下文菜单中调用事件侦听器
- 调用事件处理程序oop内部的函数
- 砖石事件:在图像加载和布局完成后调用事件
- jwplayer在80%的视频上调用事件
- 显示和隐藏上下文菜单时的 Jstree 调用事件
- 如何只调用一次事件处理程序,而不是每次单击项目时调用事件处理程序
- 调用事件侦听器 - 两种方式之一起作用,有什么区别
- 在页面加载时调用函数,而不是在单击时调用事件
- jQuery 动态调用事件侦听器
- 在模块化 JavaScript 中调用事件
- 在Bootstrap面板展开中调用事件
- 如何根据变量指定是否可以调用事件侦听器
- 调用事件中带有参数的函数
- SelectAll不调用事件处理程序
- 可以以编程方式调用事件处理程序吗?
- JS中的函数调用事件
- Ionic 2:调用事件同时订阅和取消订阅