【问题标题】:jQuery load() with ajax site refreshes带有 ajax 站点刷新的 jQuery load()
【发布时间】:2012-06-15 15:43:15
【问题描述】:

我有一个使用 jQuery 的 ajax 站点,我想知道如何允许用户刷新页面并加载适当的内容。

我有它,所以当用户点击我的网站域具有 href 属性的元素时,该页面的内容会加载到主 div 中。加载的 html 内容只是一个完整的 html 文档,所以我没有加载页面片段。我正在使用 History.js 来检查 URL 和 hashchanges。但是当我刷新页面时,只加载静态内容(无样式),而不是包含主页的页眉和页脚。另一个问题是我需要清除现有的哈希以避免 GET 404 错误。我显然希望整个页面都能正常加载。

到目前为止,这是我的代码:

jQuery(document).ready(function() {
    // Prepare
    var History = window.History; // Note: We are using a capital H instead of a lower h
    if ( !History.enabled ) {
        console.log("History is not enabled.");
         // History.js is disabled for this browser.
         // This is because we can optionally choose to support HTML4 browsers or not.
        return false;
    }
    else {
        console.log("History is enabled");
    }

    //vars for history
    var changes = 0;
    // Bind to StateChange Event
    History.Adapter.bind(window,'statechange',function(){ // Note: We are using statechange instead of popstate
        var State = History.getState(); // Note: We are using History.getState() instead of event.state
        History.log(State.data, State.title, State.url);
    });

    $("a").click(function(e) {
        e.preventDefault();
        $("#content").load(this.href, function() {
            // Change our States
            changes++;
            History.pushState({state:changes}, "State " + changes, "#" + this.href); // logs {state:1}, "State 1", "?state=1"
        });
});

【问题讨论】:

    标签: jquery load hashchange history.js browser-refresh


    【解决方案1】:

    您使用的是 HTML5 吗?您可以使用本地持久性方法来维护已通过 ajax 加载的项目,或存储任何特定的键、ID,以便在您加载或刷新页面时填充您需要的内容。

    如果没有 HTML5,则可以选择 jQuery.data,但我认为您将能够在页面刷新之前捕获/存储持久性项目, 所以这不太可能是一个可行的解决方案 - 所以我能想到的唯一其他选择是使用 cookies(在内存中,通过 JavaScript(jQuery) 创建)-作为一种解决方案,这将是一场噩梦(可能),有很多不同的点来同步所有状态,以便刷新/重新加载填充正确的东西....但如果设计得当它可以为你工作。

    【讨论】:

    • 谢谢。我可以尝试本地存储的想法。但我现在真正想知道的是另一种方法是否可行:检查特定的标题元素和对 html 标题中脚本的调用,如果没有,则执行 getScript 并通过 jQuery 加载所需的 CSS。这将解决刷新问题,但不适用于禁用 javascript 的浏览器...
    猜你喜欢
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多