很抱歉这里有新手问题,我错过了一些东西,可能很简单,但我猜对 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)的教程。感谢您对此的任何帮助:)