通常の読み込みではスクロール制御のスクリプトが問題なく動くのですが、
pjaxで遷移した後だと動かなくなります。
エラーログ:無し
jQueryバージョン:1.7.2
javascript
1scrollControl:function (){ 2 3 var keys = [32, 37, 38, 39, 40], wheelIter = 0; 4 5 function preventDefault(e) { 6 e = e || window.event; 7 if (e.preventDefault) 8 e.preventDefault(); 9 e.returnValue = false; 10 } 11 12 function keydown(e) { 13 for (var i = keys.length; i--;) { 14 if (e.keyCode === keys[i]) { 15 preventDefault(e); 16 return; 17 } 18 } 19 } 20 21 function touchmove(e) { 22 preventDefault(e); 23 } 24 25 function disable_scroll() { 26 window.onmousewheel = document.onmousewheel; 27 document.onkeydown = keydown; 28 document.body.ontouchmove = touchmove; 29 } 30 31 function enable_scroll() { 32 window.onmousewheel = document.onmousewheel = document.onkeydown = document.body.ontouchmove = null; 33 } 34 35 var docElem = window.document.documentElement, 36 scrollVal, 37 isRevealed, 38 noscroll, 39 isAnimating, 40 container = $( '#container' ), 41 trigger = $( '.pagedown' ); 42 43 function scrollY() { 44 return window.pageYOffset || docElem.scrollTop; 45 } 46 47 function scrollPage() { 48 scrollVal = scrollY(); 49 if( noscroll ) { 50 if( scrollVal < 0 ) return false; 51 window.scrollTo( 0, 0 ); 52 } 53 54 if( container.hasClass('notrans') ) { 55 container.removeClass( 'notrans' ); 56 return false; 57 } 58 59 if( isAnimating ) { 60 return false; 61 } 62 63 if( scrollVal <= 0 && isRevealed ) { 64 toggle(0); 65 } 66 else if( scrollVal > 0 && !isRevealed ){ 67 toggle(1); 68 } 69 } 70 71 function toggle( reveal ) { 72 isAnimating = true; 73 if( reveal ) { 74 container.addClass( 'is-move' ); 75 } 76 else { 77 noscroll = true; 78 disable_scroll(); 79 container.removeClass( 'is-move' ); 80 } 81 82 setTimeout( function() { 83 isRevealed = !isRevealed; 84 isAnimating = false; 85 if( reveal ) { 86 noscroll = false; 87 enable_scroll(); 88 } 89 }, 1200 ); 90 } 91 92 function menuShow(){ 93 $('.menu_trigger').on('click',function(){ 94 if(!$(this).hasClass('is-act')){ 95 if(!$('#container').hasClass('is-move')){ 96 disable_scroll(); 97 } 98 }else{ 99 enable_scroll(); 100 } 101 }); 102 } 103 104 menuShow(); 105 106 var pageScroll = scrollY(); 107 noscroll = pageScroll === 0; 108 109 disable_scroll(); 110 111 if( pageScroll ) { 112 isRevealed = true; 113 container.addClass( 'notrans' ); 114 container.addClass( 'is-move' ); 115 } 116 117 window.addEventListener( 'scroll', scrollPage ); 118 trigger.on('click',function(){ 119 toggle( 'reveal' ); 120 }); 121}
読み込みは
通常
javascript
1$(function(){});
pjax遷移後
javascript
1$(document).on('pjax:render', function() {});
で行っております。
console.logで確認するとpjax遷移後だとscrollY()の値が増えずに0に戻ってしまうので
そこが原因かと思ったのですが
なぜ戻ってしまうのかがわかりません。
ここの動きを参考にソースを改変したものになります。
http://tympanus.net/Development/ArticleIntroEffects/index.html
どなたか原因がわかる方がいればご教授お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/06 02:02
2016/06/07 12:01