2009-09-12 63 views
1

我有負載一次,然後每次用戶點擊一個按鈕,而不是加載新頁面的網站,內容只是通過AJAX代替。然而在一個頁面中我使用jQuery的UI和舉例來說,如果我在「的index.html」,然後點擊登陸進入該頁面的腳本不加載,但如果我直接進入該頁面的腳本執行正確加載。我試圖通過這樣做來調節腳本的加載。加載javascript並執行它

var hash = window.location.hash.substr(1); 
    var a = window.location.href.lastIndexOf("dev.html"); 
    var b = window.location.href.lastIndexOf(".html"); 
    var l = window.location.href.substring(a,b); 

    $(document).bind('ready',function(){ 

      if((hash == "dev") || ((l == "dev") && (hash != dev)) || (l == hash)){ 
       //$('#tabs').html("<script type=\"text\/javascript\" src=\"assets\/js\/tabs-ui-init.js\"\/><\/script>"); 
$.ajax({ 
      type: "GET", 
      url: "assets/js/tabs-ui-init.js", 
      dataType: "script" 
     }); 

      } 
    }); 

但是腳本不會加載反正......我做錯了什麼?我試圖通過$ .getScript()和一些其他的方式來加載它使用.live和有約束力的加載和卸載,但沒有成功等代替.bind ......這個網站加載的方法是在這裏就像解釋說:http://nettuts.com/javascript-ajax/how-to-load-in-and-animate-content-with-jquery/


編輯 @Jim戴維斯: 我想這正是我所需要的,只是爲什麼沒有運行?我做這將加載的內容作爲腳本參考,小組是一個div在哪裏放置這些腳本仍然代碼沒有在頁面加載運行=/

回答

2

有在這方面,有兩件事情在過去咬我。 (最少6個,也許不是8個)有一個奇怪的錯誤,其中腳本/樣式/鏈接類型標籤必須出現在可顯示的內容之後(我認爲IE需要顯示一些東西 - 任何東西 - 「初始化「文檔模型)。兩年前,我在一個項目上拉了我兩天的頭髮......終於意識到,如果我只是將樣式和腳本標籤移動到頁面底部,一切似乎都能奏效。

當加載內容腳本有時從來沒有得到正確的初始化 - 但是你可以迫使它。我有一個函數在我PanelManager abstraction做到這一點:

// Load Content 
Panel.load = function(Content) { 

     // "null" the old (to clear it) 
    Panel.innerHTML = null; 

     // Load the content 
    Panel.innerHTML = Content; 

     // Load Scripts 
    var AllScripts = Panel.getElementsByTagName("script"); 
    var AllScriptsCnt = AllScripts.length; 
    for (var Cnt = 0; Cnt < AllScriptsCnt; Cnt++){ 
     var CurScript = document.createElement('script'); 
     CurScript.type = "text/javascript"; 
     CurScript.text = AllScripts[Cnt].text; 
     Panel.appendChild(CurScript); 
    }; 

}; 

看「加載腳本」部分 - 它掃描「腳本」標籤的新內容,然後迫使腳本元素的創建具有相同內容 - 爲我工作。 (請注意,本文中的「面板」中只是一個元素的引用 - 通常包含新內容的DIV)

希望這有助於。