我有一个加载一次的网站,然后每次用户单击按钮而不是加载新页面时,内容只是通过 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/