如何在页面加载时运行JavaScript函数

时间:2014-05-26 17:28:42

标签: c# javascript asp.net

我有一个程序(c#),但程序需要适用于每个时区,所以我创建了一个js脚本来了解客户端时区,这就是我得到的(并且它可以工作),但仅限于单击操作(例如按钮),但我需要这个工作(运行)在我的页面加载是可能的吗?

这是我的剧本

<script type="text/javascript">
    function pageLoad() {
        myFunction();
    }
    function myFunction() {
        var localTime = new Date();
        var year = localTime.getYear();
        var month = localTime.getMonth() + 1;
        var date = localTime.getDate();
        var hours = localTime.getHours();
        var minutes = localTime.getMinutes();
        var seconds = localTime.getSeconds();
        var calculated_date = hours + ":" + minutes + ":" + seconds;

        var div = document.getElementById("demo");
        div.innerText = calculated_date;

        var client_date = document.getElementById("client_date");
        client_date.setAttribute("value", calculated_date);

    }
</script>

这是我到目前为止所尝试的

Page.ClientScript.RegisterStartupScript(this.GetType(), "myFunction", "myFunction()", true);
            Session["Data"] = client_date.Text;
            Response.Redirect("Welcome.aspx");

非常感谢您阅读我的帖子,希望有人可以帮助解决这个问题

5 个答案:

答案 0 :(得分:1)

是的,有可能。您所需要的只是使用onload()事件。

这样做

<body onload="myFunction()">
  <!-- body elements here -->
</body>

您可以执行要在页面加载时执行的任何功能。我使用myFunction因为必须在页面加载时执行。

答案 1 :(得分:1)

使用javascript

if (document.readyState === "complete") { myFunction(); }

使用jquery

$(document).ready(function(){ myFunction(); });

答案 2 :(得分:1)

问题不是你的想法。很有可能,此JavaScript *设置为在页面加载时运行。它可能会完全按照你的要求去做。 问题是您正在做的其他事情。请注意以下三行:

Page.ClientScript.RegisterStartupScript(this.GetType(), "myFunction", "myFunction()", true);
Session["Data"] = client_date.Text;
Response.Redirect("Welcome.aspx");

你在这里做的是:

  1. 将JavaScript设置为在页面加载时运行。
  2. 在加载页面之前从中捕获TextBox的值。
  3. 完全放弃页面并重定向到另一个页面。
  4. 因此,即使JavaScript代码运行,您也无法捕获它设置的值。即使您 捕获该值,您也可以在加载之前放弃整个页面,并将用户重定向到其他页面。

    您需要更好地理解服务器端代码之间的区别,服务器端代码在服务器上完全运行,然后再将页面传送到客户端...以及客户端代码页面已加载到客户端。

    如果您需要来自客户端的此信息,则需要从客户端代码获取此信息。此代码需要在加载的页面中运行,然后以某种方式将值发送回服务器。页面必须执行然后从客户端代码执行重定向,或者(可能更好)页面可以正常运行,向服务器发送AJAX帖子以通知您此信息(时区),然后服务器可以使用客户端代码需要相应调整页面的任何数据来响应AJAX请求。

    根据时区或您需要了解时区,您的定制内容并不十分清楚。但很明显,在从客户端检索该值之前,您需要客户端代码执行

答案 3 :(得分:0)

使用System.Web.ScriptManager像这样:

Page.ClientScript.RegisterStartupScript(this, this.GetType(), Guid.NewGuid().ToString(), "myFunction();", true);
        Session["Data"] = client_date.Text;
        Response.Redirect("Welcome.aspx");

答案 4 :(得分:0)

您可以将值存储在隐藏字段中然后读取结果,但您可以做的是将时区偏移量存储为cookie,然后在页面重新加载后在服务器上读取该值。

这篇文章完美地解释了它 http://prideparrot.com/blog/archive/2011/9/how_to_display_dates_and_times_in_clients_timezone