0

ここでの初心者の質問で申し訳ありませんが、おそらく簡単ですが、javascriptについて重要な何かが欠けています..

index.php、food_and_health.php、enlightenment.php、about_us.php の 4 つの HTML ページを含む ajax Web サイトがあります。インデックスではなく、3 つの ajax 関数があります。

そして、前後に使用するために popstate 関数を追加する必要があることを理解しています。現在、チュートリアルを検討しています。ご覧のとおり、コンソールログしかありません。

「foo が定義されていません」というコンソール メッセージが表示されたので、グローバル変数にしようとしましたが、それが問題なのかどうかよくわかりませんでした。

「foo」のIDを持つアンカーまたはHTMLには何もありませんが、js.fileでfooから「text」、および「cssmenu」に変更して、id = 'を追加しようとしましたhtml のアンカー タグの 1 つに foo' を追加しましたが、メッセージは同じです。

だから、それは私のajax関数内のローカル変数だと思います。実際、ページは前後を除いて機能し、ajax-page/ 状態に直接移動しようとすると機能します。これは、popstate 関数にデータを設定する必要があるため、pushstate-function のように、this.url のようなものがそこでも機能すると考えています。ない。)

しかし、popstate 関数を追加するにはどうすればよいでしょうか。ページごとに指定する必要がありますか、または、プッシュステート関数で行われるように this.url を取得し、プッシュステートに保存されるため、その状態を使用することができますか?

どうにかして、ajaxfuntionでもpopstateをリンクする必要があると思います..

2番目の質問、あなたはそれほど重要ではありません。コンソール ログに 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/アンカーを取り、その状態を保存します。popstate は、その状態を使用して、その html ページ内の ajax ページ間を前後にナビゲートします。たとえば、page2/ajaxfile.php から page1/someotherAjaxpage.php に戻りたい場合は、replacestate が必要です。これは正しいです?

長い質問と 2 つの質問で申し訳ありませんが、私は初心者なので、これについてできるだけ明確にし、完全に理解したいと考えています。そのため、jQuery を使用しないようにしています。

ajax-popstate-and javascript (jQuery ではない) を使用したチュートリアルを見つけるのに苦労しています。これについて助けてくれてありがとう:)

4

0 に答える 0