将代码从html移动到PHP后,脚本按需停止工作

时间:2012-12-20 01:53:30

标签: php javascript ajax jquery javascript-events

我偶然发现了一个非常奇怪的问题。

我使用ajax(确切地说是jquery加载)内容使我的网站完全正常工作,但我不得不将其重写为PHP主要是因为谷歌动态#链接的SEO问题。现在任何方式脚本按需按顺序执行以下脚本如何显示它不起作用。但显然代码很好,或者在某些情况下似乎是因为它在#时有效!加载链接并且主脚本根据需要调用用于此特定链接的所需脚本,即使我在主脚本文件中一次性调用它们也可以工作!这种现象的例子:

function getalljs() {
    getJs("js/vertical.js","js");
    getJs("js/steps.js","js");
    getJs("js/animatesteps.js","js");
    }

还有另一个奇怪的事情,其中​​一个按需加载的脚本与下面编写的相同,实际加载但jQuery加载没有(它包含背景动画)。

这些是我的剧本:

此函数用于淡出内容,加载新内​​容,更改url hash和fadein:

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

是的,这个人又召唤另一个人来抓住新装载的javascipt:

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

0 个答案:

没有答案