2010-09-08 58 views
1

我想要在母版页上动态注册一个jQuery脚本,但它不起作用,任何人都可以帮助我吗?注册jquery动态不工作

我从我的web应用程序, 根得到了在一个文件夹中的材料/脚本,脚本和我的母版页看起来像

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")); 
    }  
} 

但是,这永远不会奏效。使用

​​

工作正常。

+1

我很好奇,为什么你试图动态注册。您是否尝试根据人们访问的页面来加载和卸载客户端脚本?还是有另一个原因呢? – JasCav 2010-09-08 14:56:54

+0

@Jas - 因为脚本文件的母版页中没有正确处理相对路径。 – 2010-09-08 15:00:28

+0

很好的问题。我认为,在我的项目中,我并不需要这么做,但是我看到了这个方法在我们的另一个项目中,并且总的来说,我认为您可以更好地控制脚本。 – AGuyCalledGerald 2010-09-08 15:01:19

回答

1

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

查看aspx页面生成的HTML,查看jQuery代码的位置以及<script>标签引用jQuery的位置。

解决此问题的一种方法是在文档的底部添加您的javascript而不是HEAD

另一种选择,如果你仍然想保持你的代码在HEAD,是使用在window.onload而不是$(document).ready()例如:

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

Ups,脚本的动态注册实际上起作用,但不在主页上。一个JS错误,如果我尝试在那里执行脚本。脚本在页面的主体中。 – AGuyCalledGerald 2010-09-08 15:19:05