javascript - 加载 Javascript 并执行它

标签 javascript jquery

我有一个加载一次的网站,然后每次用户单击按钮而不是加载新页面时,内容只是通过 ajax 替换。但是,在我使用 jquery-ui 的其中一个页面上,例如,如果我进入“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"
         });

            }
    });

但是无论如何脚本都不会加载...我做错了什么?我尝试通过 $.getScript() 和其他一些方式加载它,例如使用 .live 代替 .bind 并绑定(bind)加载和卸载但没有成功......加载此站点的方式就像此处解释的那样:http://nettuts.com/javascript-ajax/how-to-load-in-and-animate-content-with-jquery/


编辑 @吉姆戴维斯: 我认为这正是我所需要的,为什么它没有运行??我对内容进行了引用,作为它将加载的脚本,面板是一个 div,用于放置这些脚本,代码仍然没有在页面加载时运行 =/

最佳答案

过去,在这方面有两件事困扰着我。

最简单的是在 IE(至少 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。)

希望这对您有所帮助。

关于javascript - 加载 Javascript 并执行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1416492/

相关文章:

javascript - 在 IE 中关闭 Iframe 时出错

jquery - 如果首先单击任何列表项,则执行此操作,否则执行此操作

javascript - 使用 npm Windows Upgrade 时出现问题

javascript - 基于项目数组在链中执行方法

javascript - NodeJs 连接到服务器后对请求进行多次回复

javascript - 如何添加链接切换图片?

javascript - 使用nodejs将文件上传到s3

javascript - TinyMce 设置编辑器按钮的文本颜色

javascript - 如果 cookie 存在则运行函数

javascript - javascript 到 jquery 的转换(getelementbyid、标记名、innertext、innerhtml)