【问题标题】:How to call javascript function on page load in asp.net [duplicate]如何在asp.net中的页面加载时调用javascript函数[重复]
【发布时间】:2012-12-14 06:44:16
【问题描述】:

可能重复:
Javascript that executes after page load

我在 asp.net 4.0 中有应用程序

我有 javascript 在文本框中显示客户端区域偏移量:- `

<script type="text/javascript">
    function GetTimeZoneOffset() {
        var d = new Date()
        var gmtOffSet = -d.getTimezoneOffset();
        var gmtHours = Math.floor(gmtOffSet / 60);
        var GMTMin = Math.abs(gmtOffSet % 60);
        var dot = ".";
        var retVal = "" + gmtHours + dot + GMTMin;
        document.getElementById('<%= offSet.ClientID%>').value = retVal;
    }

</script>

`

HTML 标记

<asp:HiddenField ID="clientDateTime" runat="server" />
<asp:HiddenField ID="offSet" runat="server" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></body>

如何在页面加载时调用此函数,以便在文本框中显示偏移量?

【问题讨论】:

  • 实际上,我不认为这是重复的。引用的问题是关于一般 HTML / JavaScript 交互的。此问题和相关答案特定于 ASP.NET。我是因为 ASP.NET 问题才来到这里的。

标签: javascript asp.net


【解决方案1】:

在后面的代码上调用 JavaScript 函数,即 在Page_Load

ClientScript.RegisterStartupScript(GetType(), "Javascript", "javascript:FUNCTIONNAME(); ", true);

如果你有UpdatePanel,那么试试这样

ScriptManager.RegisterStartupScript(GetType(), "Javascript", "javascript:FUNCTIONNAME(); ", true);

【讨论】:

  • 我试过了,但页面无法识别 ClientScript 它给出了错误
  • @MonaliJ:把你试过的贴在这里?
  • 也许这在 .NET 的最新版本中有所改变,但使用框架 4,调用如下:ClientScriptManager scriptManager = Page.ClientScript; scriptManager.RegisterStartupScript(GetType(), "Javascript", "javascript:functionName(); ", true);
【解决方案2】:
<html>
<head>
<script type="text/javascript">
function GetTimeZoneOffset() {
    var d = new Date()
    var gmtOffSet = -d.getTimezoneOffset();
    var gmtHours = Math.floor(gmtOffSet / 60);
    var GMTMin = Math.abs(gmtOffSet % 60);
    var dot = ".";
    var retVal = "" + gmtHours + dot + GMTMin;
    document.getElementById('<%= offSet.ClientID%>').value = retVal;
}

</script>
</head>
<body onload="GetTimeZoneOffset()">
    <asp:HiddenField ID="clientDateTime" runat="server" />
    <asp:HiddenField ID="offSet" runat="server" />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</body>
</html>

这里要注意的关键点是,body 有一个属性onload。只需给它一个函数名称,该函数将在页面加载时被调用。


或者,您也可以像这样在页面加载事件上调用函数

<html>
<head>
<script type="text/javascript">

window.onload = load();

function load() {
    var d = new Date()
    var gmtOffSet = -d.getTimezoneOffset();
    var gmtHours = Math.floor(gmtOffSet / 60);
    var GMTMin = Math.abs(gmtOffSet % 60);
    var dot = ".";
    var retVal = "" + gmtHours + dot + GMTMin;
    document.getElementById('<%= offSet.ClientID%>').value = retVal;
}

</script>
</head>
<body >
    <asp:HiddenField ID="clientDateTime" runat="server" />
    <asp:HiddenField ID="offSet" runat="server" />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></body>
</body>
</html>

【讨论】:

    【解决方案3】:

    将此行放在结束脚本标记之前,从内存中写入:

    window.onload  = GetTimeZoneOffset;
    

    我认为问题是如何在页面加载时调用 javascript 函数

    【讨论】:

    • 感谢@sachleen 的编辑,我已经通过我的智能手机发布了答案,似乎没有代码突出显示:-)
    • 只需在行首添加 4 个空格。 :)
    【解决方案4】:

    在内部使用您的代码

      <script type="text/javascript">
         window.onload = function() {
            var d = new Date()
            var gmtOffSet = -d.getTimezoneOffset();
            var gmtHours = Math.floor(gmtOffSet / 60);
            var GMTMin = Math.abs(gmtOffSet % 60);
            var dot = ".";
            var retVal = "" + gmtHours + dot + GMTMin;
            document.getElementById('<%= offSet.ClientID%>').value = retVal;
          }
      </script>
    

    【讨论】:

    • 这是不正确的语法并引发异常。正确的实现是:window.onload = function() { };
    猜你喜欢
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多