TypeError history.js问题

时间:2016-08-10 15:51:53

标签: javascript jquery transition history.js

我试图用history.js实现历史api,我将使用以下教程进入本主题:

http://webdesign.tutsplus.com/tutorials/lovely-smooth-page-transitions-with-the-history-web-api--cms-26405

我按照描述完成了所有操作,但是当我点击我网站上的链接时,它会抛出跟踪错误:

script.js:12 Uncaught TypeError:无法读取属性' bind'未定义的

您是否知道我需要如何更改它以便它有效?我做错了什么?

我使用jquery,history.js和教程中的custom.js文件,如下所示:



var $wrap = $( "#wrap" );
$wrap.on( "click", ".page-link", function( event ) {
    event.preventDefault();
    if ( window.location === this.href ) {
        return;
    }
    var pageTitle = ( this.title ) ? this.title : this.textContent;
        pageTitle = ( this.getAttribute( "rel" ) === "home" ) ? pageTitle : pageTitle + " — Acme";
    History.pushState( null, pageTitle, this.href );
} );

History.Adapter.bind( window, "statechange", function() {
    var state = History.getState();
    $.get( state.url, function( res ) {
        $.each( $( res ), function( index, elem ) {
            if ( $wrap.selector !== "#" + elem.id ) {
                return;
            }
            $wrap.html( $( elem ).html() );
        } );
    } );
} );




提前致谢,我希望你能帮助我:(

1 个答案:

答案 0 :(得分:0)

History.js的文档建议确保您在IIFE(立即调用的函数表达式)中加载代码:



(function(window,undefined){
// Code here
})(window);




来源:https://github.com/browserstate/history.js/(参见"直接安装"部分)

除此之外,请确保您的脚本按您列出的顺序加载:jQuery,history.js,custom.js。我假设您的代码位于custom.js中,并且不在页面上(如果是,那么这是完全不同的事情)。