Javascript:在加载页面之前引用控件

时间:2009-04-29 12:02:49

标签: asp.net javascript

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

任何想法?

脚本位于外部文件中。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

您可以将脚本保留在控件的加载方法中,尽管它应该放在 PreRender 中,因为这样您可以根据控件的状态包含它或不包含它。这样可以避免将来出现javascript错误,因为它使控件不可见,因此无法找到“对象”。

您收到“未定义Sys”的原因是因为您的脚本是在加载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,对不起,两者有不同的功能。