繁体   English   中英

ScriptManager.RegisterStartupScript(...)是否有问题?

[英]Is there an issue with ScriptManager.RegisterStartupScript(…);

我试图使用以下代码弹出Bootstrap模式,

ScriptManager.RegisterStartupScript(this.Parent, this.GetType(), "Pop", "openMsgModal5();", true);

但是它有时可以工作,而有时它会随着Chrome的焦点闪烁而闪烁。 真是时间浪费和沮丧。 该脚本是否存在Javascript问题或AJAX问题,或者JQuery与某些Bootstrap代码之间不兼容(我知道他们使用Javascript只是问问),因为我无法使JQuery弹出窗口运行。 还是ASP.net 4.0?

我已经将我的ASP:Updatepanel设置为UpdateMode =“ Always”。

我正在加载JavaScript,如下所示:

<script src="//code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>

<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js" type="text/javascript"></script>

<script src="js/bootstrap.min.js" type="text/javascript"></script>

我的页面上还有一个脚本管理器

<asp:ScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ScriptManager>

如果有人看到类似的东西,那么到目前为止,任何想法都将不胜感激,因为他们拉扯下来并阅读并尝试了大约15个论坛帖子,所有人都说相同,但没有一个对我有用。

不知道asp.net,但您的问题看起来像是加载顺序问题。 您已声明“显示模式”按钮,使用jquery的$(document).ready() funtionality( 此处为src代码,请注意底部的click事件 )向其引导事件添加了事件监听器(此后称为init),因此,如果您用html硬编码模态按钮和模态对话框,它们肯定会起作用,而如果您使用ScriptManager通过ajax调用添加它们(如果我没有做错的话), 无论是模态init还是ajax调用没有确定首先完成 Ajax调用首先完成,一切都很好; :(( 新到达的html片段将没有事件监听器作为模式正常工作
因此解决方案是,确保您的所有模态LoadScriptsBeforeUI在引导程序启动模态之前到达,看来LoadScriptsBeforeUI 或者,在我们手动初始化它们之前:如果ScriptManager有回调或在加载html片段后可以执行的事情,请将其添加到回调中: $('#myModal').modal()

当我要在部分更新后显示警报框时,我将UpdatePanel设置为注册脚本块的控件。 为了避免与其他脚本代码发生冲突,我还使用setTimeout异步调用了该代码。

在您的情况下,可能看起来像这样:

ScriptManager.RegisterStartupScript(updatePnl, updatePnl.GetType(), "Pop", "setTimeout(function() { openMsgModal5(); }, 200);", true);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM