0

我有一个 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 事件期间调用此脚本这一事实的问题吗?

4

1 回答 1

0

RegisterClientScriptBlock 和 RegisterStartupScript 不会“调用”javascript 函数,它们只会向页面添加新脚本。

RegisterClientScriptBlock 在开始的表单标签之后添加新代码;RegisterStartupScript 将代码添加到页面末尾。

您的脚本已经在页面上,因此您不必做任何一个。

模态加载时使用 javascript 调用您的函数。

于 2018-03-01T21:22:58.913 回答