.net 动态注册jquery不需要´;行不通
我想在母版页上动态注册jquery脚本, 但是它不起作用,有人能帮我吗 我从web应用程序的根目录中获取了Materials/Scripts文件夹中的脚本, 我的母版页看起来像.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
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错误在那里执行脚本。脚本在页面的主体中。