0

Ok!私は wordpress サイトで作業していますが、この JavaScript アドオンが実行するはずのすべてのことは実行されます...しかし、Safari 開発を介して要素を検査すると、すべてのヘッダー スクリプト、メタ、スタイルなどが読み込まれていることに気付きます.頭だけでなく体にも。理由がわかりません。スクリプトは次のようになります。

function ft(params) {

var ol= document.addEventListener?"DOMContentLoaded":"load"; //on load event
var navB = params.navB || "reverse slide"; //backbrowser button effect, default empty
var but = params.but || false; //Allow transitions on input type button
var cBa = params.cBa || function() {};

function aDL(url, t, o) {   //Ajax Div Load
  if (window.XMLHttpRequest) {
    r = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    r = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (r != undefined) {
    r.onreadystatechange = function() {Ol(r, t, o);};
    r.open("GET", url, true);
    r.send("");
  }
}  
function Ol(r, t, o) {  //On load div
  if (r.readyState == 4) { 
    if (r.status == 200 || r.status == 0) { 
      t.innerHTML = r.responseText;
      o();
    } else {
      t.innerHTML="Error:\n"+ r.status + "\n" +r.statusText;
    }
  }
}

    function DE()       //Div Effect
{
var dochtml = document.body.innerHTML;
document.body.innerHTML = "";
var d1 = document.createElement("div");
d1.id = "d1";
d1.style.zIndex = 2;
d1.style.position = "absolute"; 
d1.style.width = "100%"; 
d1.style.height = "100%"; 
d1.style.left = "0px"; 
d1.style.top = "0px";
document.body.appendChild(d1);
d1.innerHTML = dochtml;
var d2 = document.createElement("div");
d2.id = "d2";
d2.style.zIndex = 1;
d2.style.position = "absolute"; 
d2.style.width = "100%"; 
d2.style.height = "100%"; 
d2.style.left = "0px"; 
d2.style.top = "0px";
document.body.appendChild(d2);
return {d1: d1, d2: d2 };
}

function timeOuts(e, d1,d2)
{
setTimeout(function() { d1.className = e + " out"; }, 1);
setTimeout(function() { d2.className = e + " in"; }, 1);
setTimeout(function() { 
    document.body.innerHTML = d2.innerHTML;
    cBa();
}, 706);
}

function slideTo(href, effect, pushstate)
{
var d = DE();
var d1 = d.d1;
var d2 = d.d2;
aDL(href, d2, 
function() {
if (pushstate && window.history.pushState) window.history.pushState("", "", href);
            timeOuts(effect,d1,d2);
        }
);
}
function dC(e){ //Detect click event
var o;
var o=e.srcElement || e.target;
var tn = o.tagName.toLowerCase();
if (!but || tn!="input" || o.getAttribute("type")!="button")    //if it is not a button
{
    //try to find an anchor parent
    while (tn!=="a" && tn!=="body")
    {
        o = o.parentNode;
        tn = o.tagName.toLowerCase();
    }
    if (tn==="body") return;
}
var t = o.getAttribute("data-ftrans");
if (t) 
{
    e.preventDefault();
    var hr = o.getAttribute("href") || o.getAttribute("data-href");
    if (hr) slideTo(hr, t, true);
}
}
function aE(ev, el, f) {  //Add event
if (el.addEventListener)  // W3C DOM
    el.addEventListener(ev,f,false);
else if (el.attachEvent) { // IE DOM
     var r = el.attachEvent("on"+ev, f);
     return r;
}
}
aE("click", window, dC);

aE(ol, document,        //On load
function(ev)
{
aE("popstate", window, function(e) {    //function to reload when back button   is clicked
        slideTo(location.pathname, navB, false);
});
}

);


}

サイトへのリンクは次のとおりです。 http://www.fasw.ws/faswwp/non-jquery-page-transitions-lightweight/

そんなことはあってはならないと思います。したがって、それをきれいに保ち、ヘッドファイルをヘッドにロードしたままにし、ページコンテンツのみをロードする方法を見つけようとしています。私はこれを理解できません。プロからの助けが必要です:)

4

1 に答える 1

0

FASW には、コンポーネントの初期化前後の両方で "フック" として機能する 2 つの関数が付属しています。あなたはこのようにすることができます:

(function inittrans() 
{
    initComponents();
    var params = { /*put your options here*/ };
    new ft(params);
})();

function onTransitionFinished()
{
    initComponents();
}

function initComponents() {
    // here is where you put your "other" javascript codes
}

最初のページを読み込んだ後、遷移が発生した後に、JavaScript コードがどのように実行されるかに注目してください。とにかく、これが私がそれを回避する方法でした.coz javascriptコードは、Ajaxを介してオンザフライでFASWによってロードされるため、機能しません.

于 2013-07-03T04:13:57.413 に答える