加载Javascript并执行它

加载Javascript并执行它,javascript,jquery,Javascript,Jquery,我有一个网站,加载一次,然后每次用户点击一个按钮而不是加载一个新页面时,内容都会通过ajax替换。但是,在我使用jQueryUI的一个页面上,例如,如果我进入“index.html”,然后单击转到该页面,脚本不会加载,但如果直接转到该页面,脚本会正确加载。我已尝试通过执行以下操作来调节脚本的加载 var hash = window.location.hash.substr(1); var a = window.location.href.lastIndexOf("dev.html

我有一个网站,加载一次,然后每次用户点击一个按钮而不是加载一个新页面时,内容都会通过ajax替换。但是,在我使用jQueryUI的一个页面上,例如,如果我进入“index.html”,然后单击转到该页面,脚本不会加载,但如果直接转到该页面,脚本会正确加载。我已尝试通过执行以下操作来调节脚本的加载

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

            }
    });
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(“”);
$.ajax({
键入:“获取”,
url:“assets/js/tabs ui init.js”,
数据类型:“脚本”
});
}
});
但是脚本无论如何都不会加载…我做错了什么?我尝试通过$.getScript()和其他一些方法来加载它,例如使用.live和binding来加载和卸载而不是.bind,但没有成功…加载此网站的方式如下所述:


编辑 @吉姆·戴维斯:
我想这正是我需要的,为什么它不运行??我将内容引用为它将加载的脚本,面板是一个div,用于放置那些脚本,但是代码没有在pageload=/

上运行。在这方面,有两件事过去一直困扰着我

最简单的是,在IE中(至少6个,也许不是8个)有一个奇怪的错误,脚本/样式/链接类型标签必须出现在可显示的内容之后(我认为IE需要显示一些东西-任何东西-来“初始化”文档模型)。两年前,我在一个项目上拔了两天的头发。。。最后我意识到,如果我只是将样式和脚本标记移到页面底部,一切似乎都正常

加载内容时,脚本有时无法正确初始化-但您可以强制它。我的系统中有一个函数可以执行此操作:

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

};
//加载内容
Panel.load=功能(内容){
//“null”旧的(清除它)
Panel.innerHTML=null;
//加载内容
Panel.innerHTML=内容;
//加载脚本
var AllScripts=Panel.getElementsByTagName(“脚本”);
var AllScriptsCnt=AllScripts.length;
对于(var Cnt=0;Cnt
看看“加载脚本”部分——它扫描新内容中的“脚本”标记,然后强制创建具有相同内容的脚本元素——这对我来说很有用。(请注意,在此上下文中,“Panel”只是对元素的引用,通常是包含新内容的DIV。)

希望这有帮助