2009-04-29 53 views
3

我在ASPX页面上有一个复合控件。 ASPX页面上有Javascript,它在控件之前被加载。现在,由于脚本引用了加载脚本时不存在的控制元素,因此会抛出“Obect not defined”的Javascript错误。将脚本附加到控件的onload事件上会产生“Sys not defined”。Javascript:在页面加载之前引用控件

任何想法?

该脚本位于外部文件中。

回答

2

您可以将脚本保留在控件的加载方法中,但实际上它应该放置在PreRender中,因为您可以根据控件的状态包含它或不包含它。这将在未来出现JavaScript错误,因为您已将控件隐藏起来,从而节省您的“找不到对象”。

您得到“系统未定义”的原因是因为您的脚本在MicrosoftAjax.js文件加载之前被放置。尝试是这样的:

Dim yourScript as String = "Sys.Application.add_load(function() { /*code here*/ })" 
ScriptManager.RegisterStartupScript(Page, Me.GetType(), "ScriptKey", yourScript, true) 

否则,你可以,如果使用SYS命名空间使用Page.ClientScript挂接到document ready event不是必需的,但它听起来像是从你的问题是。

编辑:

相反的RegisterStartupScript的你可能寻找的RegisterClientScriptBlock,对不起,这两个具有不同的功能。

3

您需要在控件创建下移动Javascript函数,或者将其添加到window.load事件处理程序(jQuery和Prototype可以帮助您)中,因此您可以保证在页面加载时调用Javascript并不是之前。

相关问题