我有一个aspx网页,其中有一些jquery函数放在一个单独的asp内容占位符中。当打开带有更新面板(设置为条件更新)的modalpopup时,将从代码后面调用脚本。它们使用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)
我试过了:
- 将ID分配给aspx页面上的脚本块
- 确保RegisterClientScriptBlock调用中提供的密钥与主页面RegisterClientScriptBlock调用中指定的密钥不同
将RegisterClientScriptBlock调用 - 如下所示:
ScriptManager.RegisterClientScriptBlock(Me, GetType(Page), "JobTrackingScript", "AnimateBar(" & progbaramount & ");fadeInItems()", True)
- 在每个RegisterClientScriptBlock中的每个函数调用之后放置分号
- 使用RegisterStartupScript(我看到它将它放在页面的底部)
- 确保母版页和移动母版之间的脚本占位符没有区别
有点难过,因为页面只在移动浏览器上有问题。这可能是一个问题,这个脚本是在调用期间和updatepanel事件中调用的吗?
RegisterClientScriptBlock和RegisterStartupScript不“调用”javascript函数,它们只向页面添加新脚本。
RegisterClientScriptBlock在开始表单标记之后添加新代码; RegisterStartupScript将代码添加到页面末尾。
您的脚本已经在页面上,因此您不必执行任何一个。
在模态加载时使用javascript调用函数。