Javascript 在Magento中以Modernizer.为前缀(不是函数)

Javascript 在Magento中以Modernizer.为前缀(不是函数),javascript,php,jquery,magento,Javascript,Php,Jquery,Magento,我正试图让一个脚本在万磁王的cms页面上运行。控制台正在响应以下命令: 未捕获的TypeError:Modernizer.prefixed不是函数 奇怪的是,这个脚本在正常的html条件下运行得非常完美 问题在于这一行: animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ], 脚本(取自codrops): (函数(){ var support={animations:modernizer.cssani

我正试图让一个脚本在万磁王的cms页面上运行。控制台正在响应以下命令:

未捕获的TypeError:Modernizer.prefixed不是函数

奇怪的是,这个脚本在正常的html条件下运行得非常完美

问题在于这一行:

animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ],
脚本(取自codrops):

(函数(){
var support={animations:modernizer.cssanimations},
animEndEventNames={'WebkitAnimation':'webkitAnimationEnd','OAnimation':'oAnimationEnd','msAnimation':'MSAnimationEnd','animation':'animationend'},
animEndEventName=animEndEventNames[modernizer.前缀('animation'),
onEndAnimation=函数(el,回调){
var onEndCallbackFn=函数(ev){
if(support.animations){
如果(ev.target!=此)返回;
此.removeEventListener(animEndEventName,onEndCallbackFn);
}
if(callback&&typeof callback=='function'){callback.call();}
};
if(support.animations){
el.添加事件列表器(animEndEventName,onEndCallbackFn);
}
否则{
onEndCallbackFn();
}
};
var containers=[].slice.call(document.queryselectoral(“.container”),
ContainerCount=containers.length,
nav=document.querySelector('nav.thumb nav'),
pageTriggers=[].slice.call(nav.children),
isAnimating=false,current=0;
函数init(){
重置滚动();
//禁用滚动
window.addEventListener('scroll',noscroll);
//设置当前页面触发器
classie.add(页面触发器[当前],“thumb-nav_uu项--当前”);
//设置当前容器
添加(容器[当前],“容器--当前”);
//初始化事件
initEvents();
}
函数initEvents(){
//幻灯片导航
forEach(函数(pageTrigger){
pageTrigger.addEventListener('click',函数(ev){
ev.preventDefault();
导航(这个);
} );
} );
//单击相应的触发器按钮时打开每个容器的内容区域
containers.forEach(函数(容器){
container.querySelector('button.trigger').addEventListener('click',function()){
切换内容(容器,此);
} );
} );
//键盘导航事件
文档.添加的EventListener('keydown',函数(ev){
var keyCode=ev.keyCode | | ev.which,
isContainerOpen=容器[current].getAttribute('data open')=='open';
开关(钥匙代码){
//左键
案例37:
如果(当前>0&!isContainerOpen){
导航(页面触发器[current-1]);
}
打破
//右键
案例39:
if(当前<容器计数-1&&!isContainerOpen){
导航(页面触发器[当前+1]);
}
打破
}
} );
}
功能导航(页面触发器){
var oldcurrent=电流,
newcurrent=pageTriggers.indexOf(pageTrigger);
if(isAnimating | | oldcurrent===newcurrent)返回;
isAnimating=true;
//重置卷轴
allowScroll();
重置滚动();
防止滚动();
var currentPageTrigger=pageTriggers[当前],
nextContainer=document.getElementById(pageTrigger.getAttribute('data container')),
currentContainer=容器[当前],
dir=newcurrent>oldcurrent'left':'right';
类别删除(currentPageTrigger,'thumb-nav_uuItem--current');
添加(页面触发器,“拇指导航项目——当前”);
//更新当前
电流=新电流;
//添加动画类
add(nextContainer,dir=='left'?'container--animInRight':'container--animInLeft');
add(currentContainer,dir=='left'?'container--animOutLeft':'container--animOutRight');
onEndAnimation(currentContainer,function(){
//清除动画类
classie.remove(currentContainer,dir=='left'?'container--animOutLeft':'container--animOutRight');
移除(nextContainer,dir=='left'?'container--animInRight':'container--animInLeft');
//清除当前类别/设置当前类别
classie.remove(currentContainer,'container--current');
classie.add(nextContainer,'container--current');
isAnimating=假;
} );
}
//显示内容部分
函数切换内容(容器、触发器){
if(classie.has(容器,'container--open')){
类别移除(容器,“容器-打开”);
类别移除(触发器,‘触发器—活动’);
移除(导航,“拇指导航-隐藏”);
container.setAttribute('data open','');
防止滚动();
}
否则{
添加(容器,'container--open');
添加(触发器,'触发器--活动');
添加(导航,“拇指导航-隐藏”);
setAttribute('data open','open');
allowScroll();
}
}
//滚动功能
函数resetScroll(){document.body.scrollTop=document.documentElement.scrollTop=0;}
函数preventScroll(){window.addEventListener('scroll',noscroll);}
函数allowScroll(){window.removeEventListener('scroll',noscroll);}
函数noscroll(){
滚动到(0,0);
(function() {
var support = { animations : Modernizr.cssanimations },
        animEndEventNames = { 'WebkitAnimation' : 'webkitAnimationEnd', 'OAnimation' : 'oAnimationEnd', 'msAnimation' : 'MSAnimationEnd', 'animation' : 'animationend' },
        animEndEventName = animEndEventNames[ Modernizr.prefixed( 'animation' ) ],
        onEndAnimation = function( el, callback ) {
            var onEndCallbackFn = function( ev ) {
                if( support.animations ) {
                    if( ev.target != this ) return;
                    this.removeEventListener( animEndEventName, onEndCallbackFn );
                }
                if( callback && typeof callback === 'function' ) { callback.call(); }
            };
            if( support.animations ) {
                el.addEventListener( animEndEventName, onEndCallbackFn );
            }
            else {
                onEndCallbackFn();
            }
        };

    var containers = [].slice.call( document.querySelectorAll( '.container' ) ),
        containersCount = containers.length,
        nav = document.querySelector( 'nav.thumb-nav' ),
        pageTriggers = [].slice.call( nav.children ),
        isAnimating = false, current = 0;

    function init() {
        resetScroll();
        // disable scrolling
        window.addEventListener( 'scroll', noscroll );
        // set current page trigger
        classie.add( pageTriggers[ current ], 'thumb-nav__item--current' );
        // set current container
        classie.add( containers[ current ], 'container--current' );
        // initialize events
        initEvents();
    }

    function initEvents() {
        // slideshow navigation
        pageTriggers.forEach( function( pageTrigger ) {
            pageTrigger.addEventListener( 'click', function( ev ) {
                ev.preventDefault();
                navigate( this );
            } );
        } );

        // open each container's content area when clicking on the respective trigger button
        containers.forEach( function( container ) {
            container.querySelector( 'button.trigger' ).addEventListener( 'click', function() {
                toggleContent( container, this );
            } );
        } );

        // keyboard navigation events
        document.addEventListener( 'keydown', function( ev ) {
            var keyCode = ev.keyCode || ev.which,
                isContainerOpen = containers[ current ].getAttribute( 'data-open' ) == 'open';

            switch (keyCode) {
                // left key
                case 37:
                    if( current > 0 && !isContainerOpen ) {
                        navigate( pageTriggers[ current - 1 ] );
                    }
                    break;
                // right key
                case 39:
                    if( current < containersCount - 1 && !isContainerOpen ) {
                        navigate( pageTriggers[ current + 1 ] );
                    }
                    break;
            }
        } );
    }

    function navigate( pageTrigger ) {
        var oldcurrent = current,
            newcurrent = pageTriggers.indexOf( pageTrigger );

        if( isAnimating || oldcurrent === newcurrent ) return;
        isAnimating = true;

        // reset scroll
        allowScroll();
        resetScroll();
        preventScroll();

        var currentPageTrigger = pageTriggers[ current ],
            nextContainer = document.getElementById( pageTrigger.getAttribute( 'data-container' ) ),
            currentContainer = containers[ current ],
            dir = newcurrent > oldcurrent ? 'left' : 'right';

        classie.remove( currentPageTrigger, 'thumb-nav__item--current' );
        classie.add( pageTrigger, 'thumb-nav__item--current' );

        // update current
        current = newcurrent;

        // add animation classes
        classie.add( nextContainer, dir === 'left' ? 'container--animInRight' : 'container--animInLeft' );
        classie.add( currentContainer, dir === 'left' ? 'container--animOutLeft' : 'container--animOutRight' );

        onEndAnimation( currentContainer, function() {
            // clear animation classes
            classie.remove( currentContainer, dir === 'left' ? 'container--animOutLeft' : 'container--animOutRight' );
            classie.remove( nextContainer, dir === 'left' ? 'container--animInRight' : 'container--animInLeft' );

            // clear current class / set current class
            classie.remove( currentContainer, 'container--current' );
            classie.add( nextContainer, 'container--current' );

            isAnimating = false;
        } );
    }

    // show content section
    function toggleContent( container, trigger ) {
        if( classie.has( container, 'container--open' ) ) {
            classie.remove( container, 'container--open' );
            classie.remove( trigger, 'trigger--active' );
            classie.remove( nav, 'thumb-nav--hide' );
            container.setAttribute( 'data-open', '' );
            preventScroll();
        }
        else {
            classie.add( container, 'container--open' );
            classie.add( trigger, 'trigger--active' );
            classie.add( nav, 'thumb-nav--hide' );
            container.setAttribute( 'data-open', 'open' );
            allowScroll();
        }
    }

    // scroll functions
    function resetScroll() { document.body.scrollTop = document.documentElement.scrollTop = 0; }
    function preventScroll() { window.addEventListener( 'scroll', noscroll ); }
    function allowScroll() { window.removeEventListener( 'scroll', noscroll ); }
    function noscroll() { 
        window.scrollTo( 0, 0 ); 
    }

    init();

    // For Demo purposes only (prevent jump on click)
    [].slice.call( document.querySelectorAll('.items-wrap a') ).forEach( function(el) { el.onclick = function() { return false; } } );
})();
(function() {
    //... all your code, including Modernizr.prefixed() call ...
})();
//...
(function() {
    //... all your code, including Modernizr.prefixed() call ...
})();
//...

<script src="[path to include that defines global Modernizr object]"></script>
Modernizr