.net 动态注册jquery不需要´;行不通

.net 动态注册jquery不需要´;行不通,.net,jquery,scriptmanager,.net,Jquery,Scriptmanager,我想在母版页上动态注册jquery脚本, 但是它不起作用,有人能帮我吗 我从web应用程序的根目录中获取了Materials/Scripts文件夹中的脚本, 我的母版页看起来像 public partial class Application : System.Web.UI.MasterPage { protected void Page_Load(object sender, EventArgs e) { ScriptManager.RegisterClient

我想在母版页上动态注册jquery脚本, 但是它不起作用,有人能帮我吗

我从web应用程序的根目录中获取了Materials/Scripts文件夹中的脚本, 我的母版页看起来像

public partial class Application : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "jquery",
            VirtualPathUtility.ToAbsolute("~/Materials/Scripts/jquery-1.4.2.min.js"));
    }     
}
但这永远不会奏效。使用

<script src="../../Materials/Scripts/jquery-1.4.2.min.js" type="text/javascript"></script>


工作正常。

当您使用
ScriptManager
添加脚本引用时,它会将
script
标记添加到
HTML
页面的
BODY
,而不是HEAD部分。如果有任何jquery代码在
$(document).ready()
上运行,它将无法工作,因为jquery尚未加载

查看由
aspx
页面生成的HTML,查看jQuery代码的位置以及引用
jQuery
标记的位置

解决这个问题的一种方法是将javascript添加到文档的底部,而不是
标题

如果您仍然希望将代码保留在
标题中,另一个选项是使用window.onload而不是
$(document).ready()
,例如:

window.onload = function() {
 ... your jquery code here
}

使用
ScriptManager
添加脚本引用时,它会将
script
标记添加到
HTML
页面的
BODY
,而不是HEAD部分。如果有任何jquery代码在
$(document).ready()
上运行,它将无法工作,因为jquery尚未加载

查看由
aspx
页面生成的HTML,查看jQuery代码的位置以及引用
jQuery
标记的位置

解决这个问题的一种方法是将javascript添加到文档的底部,而不是
标题

如果您仍然希望将代码保留在
标题中,另一个选项是使用window.onload而不是
$(document).ready()
,例如:

window.onload = function() {
 ... your jquery code here
}

我很好奇为什么您要尝试动态注册它。您是否试图根据用户访问的页面加载和卸载客户端脚本?或者这样做还有其他原因吗?@Jas-因为脚本文件的母版页中没有正确处理相对路径。问得好。我想,在我的项目中,我真的不需要这样做,但我在我们的另一个项目中看到了这种方法,一般来说,我认为您对脚本有更多的控制权。尝试用
ResolveUrl替换
virtualPath实用性(
不,也没有帮助,谢谢你的回答。我很好奇你为什么要尝试动态注册它。你是想根据用户访问的页面加载和卸载客户端脚本吗?还是还有其他原因?@Jas-因为脚本文件的母版页中没有正确处理相对路径。好问题我想,在我的项目中,我真的不需要这样做,但我在我们的另一个项目中看到了这种方法,一般来说,我认为你对脚本有更多的控制权。试着用
ResolveUrl替换
virtualPath.ToAbsolute(
)(
不,也没有帮助,谢谢你的回答。Ups,脚本的动态注册实际上有效,但不在母版页上。如果我尝试在那里执行脚本,我会收到一个JS错误。脚本在页面主体中。Ups,脚本的动态注册实际上有效,但不在母版页上。如果我尝试执行脚本,我会收到一个JS错误在那里执行脚本。脚本在页面的主体中。