2010-09-08 69 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