我有一个 aspx 网页,其中一些 jquery 函数放置在一个单独的 asp 内容占位符中。当打开带有更新面板(设置为条件更新)的模态弹出窗口时,将从后面的代码调用脚本。它们是使用 RegisterClientScriptBlock 调用的。
在桌面浏览器中加载模式后,脚本工作正常,我没有收到任何错误(使用浏览器调试控制台检查);但是,在移动浏览器中打开模式会导致控制台捕获到意外的标识符错误。检查浏览器调试器上的源页面会发现,在移动浏览器中,RegisterClientScriptBlock 调用与来自母版页的另一个脚本调用放置在同一块中。这可以防止动画发生。
代码:
<script type="text/javascript">
function AnimateBar(width) {
$(".progress-bar").animate({
width: width + "%"
}, 2500);
$(".progressShow").text(width + "% Complete");
};
function fadeInItems() {
var items = $('.jobTrackingWell').hide();
var i = 0;
(function displayItem() {
items.eq(i++).delay(5).fadeIn(350, displayItem);
})();
};
</script>
代码背后:
ScriptManager.RegisterClientScriptBlock(Me, GetType(Page), "JobTrackingScript", "AnimateBar(" & progbaramount & ")", True)
ScriptManager.RegisterClientScriptBlock(Me, GetType(Page), "JobTrackingScript2", "fadeInItems()", True)
我努力了:
- 为 aspx 页面上的脚本块分配一个 ID
- 确保 RegisterClientScriptBlock 调用中提供的键与母版页 RegisterClientScriptBlock 调用中指定的键不同
- 将 RegisterClientScriptBlock 调用组合成一个,如下所示:
ScriptManager.RegisterClientScriptBlock(Me, GetType(Page), "JobTrackingScript", "AnimateBar(" & progbaramount & ");fadeInItems()", True)
- 在每个 RegisterClientScriptBlock 中的每个函数调用之后放置分号
- 使用 RegisterStartupScript(我看到它放在页面底部)
-确保母版页和移动版母版之间的脚本占位符没有差异
有点难过,因为该页面仅在移动浏览器上存在问题。这可能是在 updatepanel 事件期间调用此脚本这一事实的问题吗?