【问题标题】:calling Javascript at page load在页面加载时调用 Javascript
【发布时间】:2010-06-21 13:01:34
【问题描述】:

我有一个 Javascript。我只想在页面加载时调用。我不想在回发时打电话.. (Asp.net 3,5)

【问题讨论】:

  • 对不起,我忘了告诉,在 MasterPage 中的 javascript。所以每次页面加载都会触发 jscript..
  • 我无法解决这个问题。当内容页面正在加载时,Jscript 正在运行。我不想这样做。我只想调用 Jscript 一 (1) 次..

标签: c# .net asp.net javascript


【解决方案1】:

在你的代码后面:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        ClientScript.RegisterStartupScript(GetType(), "key", "someFunction();", true);
    }
}

【讨论】:

  • 如果您希望脚本只运行一次,您可以使用Session 属性来指示脚本是否已运行并根据其值包含或不包含脚本。
  • 好的。我认为在母版页生命周期初始化时不可能运行一次。
  • 如何设置会话值?因为每次页面加载Session值都会被重置?我无法检查会话值并调用 javascript..
【解决方案2】:

【讨论】:

  • 您可能希望将此与 ClientScript.RegisterStartupScript 技术结合起来,以便仅在 if (!Page.IsPostBack) {} 中添加脚本
【解决方案3】:

更好的办法是在加载的标签处调用你的 java 脚本函数。这里java脚本只调用一次。不是在所有回发中。

【讨论】:

    【解决方案4】:

    您还可以附加到 load 事件,以避免在 JavaScript 中使用 document.onload 意外覆盖 body 标记中的 onload。这通常只是具有内容页面的母版页实现自己的加载事件并覆盖母版页 JavaScript 的问题。

    <script type="text/javascript">
        function Page_loaded() {
            //Do Work
        }
    
        if (document.all) {
            //IE
            window.attachEvent('onload', Page_loaded);
        } else {
            //Everything else
            window.addEventListener('load', Page_loaded, false);
        }
    </script>
    

    【讨论】:

      【解决方案5】:
      <html>
      <head>
      
      </head>
      <body onload="javascript:yourFunctionCall()">
      
      </body>
      </html>
      

      【讨论】:

      • 这仍将在回发时运行
      • 这将在 Postback 中调用。
      • 这样你就不会浪费计算机时间来添加字符串、代码等。
      猜你喜欢
      • 2012-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多