Web表单:body onload事件找不到javascript函数

时间:2011-09-18 16:31:58

标签: javascript asp.net javascript-events webforms

我来自MVC背景,我对网络表单几乎没有经验。

我已经确定了问题所在,但到目前为止我一直无法解决这个问题。

我有一个表单,用于在表单的主体加载时执行javascript函数。请注意head标签在服务器属性上运行,因为它需要使用Request.QueryString

代码如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">

<script type="text/javascript">

    function doSomething()
    {
        // Use web forms to do something
        var foo = <%= Request.QueryString["input"] %>;
    }

</script>
<title>Foo</title>
</head>
<body onload="doSomething()">
    <form id="MainForm" runat="server">
    <table width="272px" border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td class="body">
                ...
            </td>
        </tr>
    </table>
    </form>
</body>
</html>

我收到以下错误:

SCRIPT5007:属性'doSomething'的值为null或未定义,而不是Function对象。

我的猜测是某些东西在服务器或其他方面执行。这在以前(一年多以前)有效,因此可能会覆盖Web配置中的某些内容。我花了大部分时间在这上面,到目前为止没有运气。

谢谢

编辑:生成的输出低于

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<script type="text/javascript">

    function doSomething()
    {
        debugger;                 
        var o = crmForm.queryString;    
    }

</script>


    <title></title>
</head>
<body onload="doSomething()">
    <form name="MainForm" method="post" action="fooPage.aspx?input=queryString" id="MainForm">
<div>
// hidden fields
    <table width="272px" border="0" cellpadding="0" cellspacing="0">
        <tr>
            <td class="body">
                // inputs
            </td>
        </tr>
    </table>



</form>
</body>
</html>

1 个答案:

答案 0 :(得分:3)

您还可以在onload代码中添加以下代码,而不是使用body代码的<script>属性:

if(window.addEventListener) window.addEventListener("load", doSomething, true);
else window.onload = doSomething;