【问题标题】:History.js IssueHistory.js 问题
【发布时间】:2011-11-07 19:24:01
【问题描述】:

我让我的历史 API 可以工作,但是我正在尝试实现 History.js,但我似乎无法访问 state.data。我想用state.data中的字符串to9调用对应的函数。虽然我的概念适用于 History API,但不适用于 History.js,我的代码位于下面:

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

    // 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
        alert(State.data);
        if (State.data != null) {
            var strFun = State.data;
            alert(strFun);
            //Create the function call from function name and parameter.
            var mySplitResult = strFun.split(",");
            //var strParam = "null";
            //Call the function and arguments 
            window[mySplitResult[0]](mySplitResult[1], mySplitResult[2]);
        }
    });
})(window);

我的链接是这样的:

<li>
  <a href="#" onclick="javascript:History.pushState({state:newarticles},'New Articles','newarticle'); return false;">Articles</a>
</li>
<li>
  <a href="#" onclick="javascript:History.pushState({state:displaybookmarks},'Favourties','favourties'); return false;">Favourites</a>
</li>
<li>
  <a href="#" onclick="javascript:History.pushState({state:pagenation},Listing,1,'Archive','archieve1'); return false;">Archive</a>
</li>

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript html history.js


    【解决方案1】:

    每个调用的正确方法如下...注意onclick没有javascript:,并且引用了状态数据!

    <a href="#" onclick="History.pushState({state:'newarticles'},'New Articles','newarticle'); return false;"&gt;Articles&lt;/a>
    

    希望对您有所帮助! 皮特

    【讨论】:

    • 会试一试并记录我的结果
    • 好的,当我提醒我的 state.data 我得到 Object Object 而不是字符串时,这仍然不起作用。如何让我的 state.data 显示字符串而不是对象。
    • 我得到了这个工作,但使用 state.title 而不是 state.data。似乎 state.data 由于某种原因仍然持有一个对象
    • 它将状态推入对象,因为您将其作为对象推入。而不是做 .pushSate({state:'newarticles'}, "new"...) 尝试做 .pushState("newarticles", "New Articles"...
    • 我已经尝试过了,但实际上它在 HTML5 的普通 History API 中运行良好,但在 History.js 中却没有
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2012-06-10
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    相关资源
    最近更新 更多