2009-09-12 70 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)

希望这有助于。