我偶然发现了一个非常奇怪的问题。
我在html中使用ajax(确切地说是jQuery加载)内容制作了我的网站,它一切正常,但我不得不将它重写为PHP,主要是因为Google动态#
链接的SEO问题。无论如何,现在使用下面的脚本执行的按需脚本以这种顺序显示它的方式不起作用。但是显然代码很好,或者在某些情况下似乎很好,因为它在#!
加载链接并且主脚本按需调用用于该特定链接的所需脚本时工作,即使我在主脚本文件中一次调用它们它们做工作!这种现象的例子:
function getalljs() {
getJs("js/vertical.js","js");
getJs("js/steps.js","js");
getJs("js/animatesteps.js","js");
}
那里发生了另一件奇怪的事情,其中一个按需脚本以与下面编写的方式相同的方式加载,实际加载但 jQuery 加载没有(它包含背景动画)。
这些是我的脚本:
此函数用于淡出内容、加载新内容、更改 url 哈希和淡入:
function loadajax(toLoad, rest, div, js) {
window.location.hash = toLoad;
div.fadeOut(150, loadContent);
function loadContent() {
contentload(toLoad, rest, div, js);
reappear();
}
function reappear() {
div.fadeIn(1000);
}
return false;
}
你可能注意到它调用了另一个函数,这个函数用于加载 html,带有 jQuery 加载。
function contentload(fragment, rest, div, js) {
fragment = fragment.slice(1).replace('!', '')
div.load((fragment + rest), getJs(js, "js"));
}
是的,这个调用另一个来获取用于新加载内容的 Javascript:
function getJs(filename, filetype){
if (filetype=="js"){ //if filename is a external JavaScript file
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", filename)
}
else if (filetype=="css"){ //if filename is an external CSS file
var fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
}
if (typeof fileref!="undefined")
document.getElementsByTagName("head")[0].appendChild(fileref)
}
这是负责调用它的代码:
$("#horizontal_cssmenu a").click(function () {
var div = $('#contentsth');
var toLoad = $(this).attr('href');
var rest = '?ajax=1';
var javka = 'js/vertical.js';
loadajax(toLoad, rest, div, javka);
return false;
});