【问题标题】:Run a javascript inside control after visibled可见后在控件内运行 javascript
【发布时间】:2013-12-29 06:37:54
【问题描述】:

我有一个在页面加载时不可见的控件:

<script type="text/javascript">
function myFunc() {
    // do somthing
}
</script>
<a runat="server" id="aFileLink" >
</a>
<asp:Image runat="server" ID="imgThumbnail" />

此控件位于更新面板内。当我将控件的可见性设置为 true 时,我想运行 myFunc() 函数。所以我在控件的可见性设置为 true 后写了这一行:

ScriptManager.RegisterClientScriptBlock(Page, typeof(Page), "", "myFunc();" , true);

但是,当显示控件时会引发错误并说方法“myFunc”是未知的。 为什么? 似乎我的脚本块永远不会执行,因为当我在其中编写简单的“警报”函数时,它在控件显示后不起作用!!!!显示控制后我检查了页面的来源,我看到了“myFunc”和“alert”功能!

【问题讨论】:

    标签: javascript asp.net updatepanel


    【解决方案1】:

    为什么不检查脚本内部以确保代码仅在预期元素可见时运行

    确保包含 jquery 参考

    <script type="text/javascript">
    function myFunc() {
        if($(element).is(":visible")) {
        // do somthing
        }
    }
    </script>
    

    【讨论】:

    • 我说的是服务器端“可见”属性而不是客户端或 JQuery!
    • 无论是服务器端还是客户端,最终都在浏览器上,所以在服务器端设置可见真或假与在客户端设置 display:none 相同
    • 哦!你犯了错误。在 asp.net 服务器端将控件的可见性设置为 false 会导致控件不会发送到客户端并且它不会存在于页面源中。
    • @Mojtaba 感谢您提供的信息,这就是我喜欢 stackoverflow 的原因 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-30
    • 2012-08-13
    • 1970-01-01
    相关资源
    最近更新 更多