ScriptManager.RegisterStartupScript(...)是否存在问题;

时间:2016-05-14 16:39:51

标签: javascript asp.net ajax twitter-bootstrap bootstrap-modal

我试图使用以下代码

弹出一个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”。

我按如下方式加载javascripts:

<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个论坛帖子到目前为止,所有人都说同样但没有为我工作。

2 个答案:

答案 0 :(得分:0)

不知道asp.net但你的问题看起来像加载订单问题。你已经声明了“show modal”按钮,bootstrap使用jquery的$(document).ready()功能(src code here, note the click event on the bottom)添加事件监听器(我之后称之为init),所以如果你硬编码你的模态按钮和在html中的模态对话框,它们肯定会工作,而如果你使用ScriptManager通过ajax调用添加它们(如果我没有弄错它的作用),是否先确定模态初始化或ajax调用是否已确定< / strong>即可。 Ajax调用首先完成,一切都很好;完成另一个后,:((新到的html片段不会让事件监听器作为模态正常工作
因此解决方案是,确保所有模态htmls在启动之前到达模态,似乎const uploadFile = (file) => new Promise((resolve, reject) => { const writeStream = client.upload({ container: "mycontainer, remote: file }); writeStream.on("finish", resolve); fs.createReadStream("./local_path/" + file).pipe(writeStream); } const uploadFiles = async (files) => { for(let file of files) { await uploadFile(file); } } await uploadFiles(filesToUpload); console.log('All uploads completed.'); 就是这样做。或者,在我们手动输入之前:如果ScriptManager有一个回调或者在加载html片段后可以执行的操作,请将其添加到回调:LoadScriptsBeforeUI

答案 1 :(得分:0)

当我想在部分更新后显示警告框时,我将UpdatePanel设置为注册脚本块的控件。为避免与其他脚本代码发生冲突,我还使用proxy: '127.0.0.98:80' 异步调用代码。

在您的情况下,它可能如下所示:

setTimeout