0

很抱歉这里有新手问题,我错过了一些东西,可能很简单,但我猜对 javascript 很重要..

我有一个 ajax 网站,有四个 html 页面,index.php、food_and_health.php、enlightment.php 和 about_us.php。我在这三个中都有ajax函数,而不是索引。

而且我确实知道我需要添加 popstate 功能,以使用后退和前进,我现在正在研究一个教程,如你所见,我只有控制台日志。

我收到控制台消息“未定义 foo”,我尝试将其设为全局变量,但没有成功,因为我也不知道这是否是问题所在。

我的 html 中没有锚,或任何 id 为 'foo' 的东西,但我尝试在我的 js.file 中从 foo 更改为 'text' 和 'cssmenu',并尝试添加 id=' foo' 到我的一个锚标记,在我的 html 中,但仍然是相同的消息。

所以我猜,它是一个局部变量,在我的 ajax 函数中。实际上,页面可以正常工作,除了后退和前进,如果我尝试直接导航到 ajax-page/ 状态。我知道这是因为我需要在我的 popstate 函数中设置一些数据,我认为像 this.url 这样的东西也可以在那里工作,就像在我的 pushstate-function 中一样。(push-state 和 popstate 之间的结合就是我的意思失踪。)

但是如何添加 popstate 函数呢?我是否需要为每个页面指定,或者我可以以某种方式说,使用 this.url,因为它在 pushstate 函数中完成,并使用该状态,因为它保存在 pushstate 中?

我想我需要在ajaxfuntion中以某种方式链接popstate..

第二个问题,你没那么重要。为什么我的控制台日志显示一些 jQuery?那是因为'google-apis',我有我的字体(橘子)的链接吗?由于我不使用任何 jQuery,我对我的索引页使用 jQuery 感到惊讶,但我认为这就是问题所在。在我的控制台中,我有 jquery.1.8.2.min.js 和 collectorjQuery.js 这些来自“googleapis”吗?:)

我还将添加一个 jsfiddle,这显示了我的 food_and_health.php 页面,以及我的 css 和 js。(主要忽略css,只是为了看起来'ok'而添加):

http://jsfiddle.net/y0o39897/4/

并且 cssmenu 不会在小提琴中打开,但至少会在 chrome 和 firefox 中打开。

这是我的js,我有点挣扎!

function Food(url) {
    var xmlhttp;
    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    } else { // code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById('text').innerHTML = xmlhttp.responseText;
            history.pushState({}, 'foo', url);
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();

}

foo.addEventListener('click', function (e) {
    e.preventDefault();
    Food(this.href);
    return false;
}, true);

window.addEventListener("popstate", function(e) {

    console.log(e);

});

我已经阅读了很多关于此的页面,并且据我所知;pushstate 采用任何状态,在我的例子中是 this.url,即被点击的 url/anchor,并保存该状态。然后,popstate 将使用该状态在该 html 页面中的 ajax 页面之间来回导航。如果我想从 page2/ajaxfile.php 返回到 page1/someotherAjaxpage.php,我需要 replacestate。这个对吗?

很抱歉这个问题很长,两个问题合二为一,但我是新手,想尽可能清楚地了解这一点,并完全理解它,这就是我尽量不使用 jQuery 的原因。

我很难找到使用 ajax-popstate-和 javascript(不是 jQuery)的教程。感谢您对此的任何帮助:)

4

0 回答 0