/** * 首页初始化 */ define(function(require, exports, module){ var $ = require('lib/zepto'), //tip = require('ui/widget/tip'), //giftflow = require('ui/widget/giftflow'), slideview = require('ui/slideview'), scrollview = require('ui/scrollview'), ai = require('lib/ai'), //ajax = require('util/ajax'), //user = require('module/user'), //userinfo = user.getInfo(), ScrollSlide = require('/index3/js/ui/scrollslide'); var slipjs; var scroll, tools = {}; tools.hasTouch = 'ontouchstart' in window; tools.touchStart = tools.hasTouch ? 'touchstart' : 'mousedown'; tools.touchMove = tools.hasTouch ? 'touchmove' : 'mousemove'; var isInitedInfo = false; var config = { showBackTopOffset : 100, jumpDelay : 500 }; /* function onBodyTouchStart(evt){ if(scroll.isShow){ scroll.toggle(); if(evt.target != $('#ptlogin-cancel')[0]){ evt.preventDefault(); }else{ $('#ptlogin-cancel').trigger('click'); } } $('body')[0].removeEventListener(tools.touchStart, onBodyTouchStart); } //阻止body滑动 function stopBodySlide(){ var $body = $('body'); $body[0].addEventListener(tools.touchStart, onBodyTouchStart); } function wapgetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); var r = window.location.search.substr(1).match(reg); if (r != null) return unescape(r[2]); return null; } //侧边栏滑动 function slideSideBar(){ if($('#sidebar').length > 0){ var $dom = $('#sidebar'), that = this, $slideDom = $('#slide_side_box') ,parentHeight = $dom.height(), height = $slideDom.height(); $dom[0].addEventListener(tools.touchStart, function(evt){ evt.stopPropagation(); }, false); $dom[0].addEventListener(tools.touchMove, function(evt){ evt.stopPropagation(); }, false); $dom.on('click', function(evt){ return false; }); //点击流,防止被上一层阻止事件冒泡 $slideDom.delegate('[data-pvtag]', 'click', function(){ var tag = $(this).attr('data-pvtag'); tag && stat.click(tag); return false; }); } } function initSlip(){ if(slipjs){ return; } var $slideDom = $('#slide_side_box'); $('#siderbar_wrap').css('height', ai.wh()); $slideDom.css('height', $slideDom[0].scrollHeight) slipjs = slip('px', $slideDom[0], { no_bar: true, direction : 'y', height: ai.wh() }); }*/ module.exports = function(){ /* * Banner图片 */ if($('#slider').length){ new slideview({ dom : $('#slider') }); } /** * 礼包列表 */ if($('#giftlist-wrap').length){ new scrollview({ wrapSel : '#giftlist-wrap', listSel : '#giftlist', itemSel : 'li' }); } $('.j_app_inc').each(function(i, ul){ var $ul = $(ul); var $siblings = $ul.siblings('ul.mod-app-list'); var map = {}; var hideNum = 0; var num; $ul.find('li').each(function(i, li){ var $li = $(li); var url = $li.attr('data-url'); map[url] = 1; }); $siblings.each(function(i, sibling){ var $sibling = $(sibling); var isConfict = false; $sibling.find('li').each(function(i, li){ if(isConfict){ return; } var url = $(li).attr('data-url'); if(map[url]){ isConfict = true; hideNum++; $sibling.hide(); } }); }); if(hideNum < 2){ hideByNum($siblings, 2 - hideNum); } $ul.show(); }); if(ai.ovb.android()){ var aurl = $('.ku_wapurl').attr('data-anurl'); if(aurl) $('.ku_wapurl').attr('data-url',aurl); $('.ku_url').attr('data-url','http://m.18183.com/android.html'); }else if(ai.ovb.iphone()){ var aurl = $('.ku_wapurl').attr('data-iurl'); if(aurl) $('.ku_wapurl').attr('data-url',aurl); $('.ku_url').attr('data-url','http://m.18183.com/iphone.html'); }else if(ai.ovb.ipad()){ var aurl = $('.ku_wapurl').attr('data-ipurl'); if(aurl) $('.ku_wapurl').attr('data-url',aurl); $('.ku_url').attr('data-url','http://m.18183.com/ipad.html'); } /*滑动 var width = 210; scroll = new ScrollSlide({ slideContent : '#sidebar', slideBody : ['.header', '.content','.mod_download_sup', '.footer'], width : width, direction : 'right', //afterShow和afterHide中移除data-url操作主要为了解决touchStart事件穿透问题 afterShow : function(){ setTimeout(function(){ $('#j-slide-art').attr('data-url', '/art.shtml'); }, 100); $('#j_head_nav li a').each(function(i, li){ var $li = $(li); $li.attr('data-url-ori', $li.attr('data-url')); $li.removeAttr('data-url'); $li.removeAttr('href'); }); }, afterHide : function(){ $('#j-slide-art').removeAttr('data-url'); setTimeout(function(){ $('#j_head_nav li a').each(function(i, li){ var $li = $(li); $li.attr('data-url', $li.attr('data-url-ori')); $li.removeAttr('data-url-ori'); }); }, 500); } }); slideSideBar(); if($('#nav_forum').length > 0){ $('#nav_forum')[0].addEventListener(tools.touchStart, function(evt){ $('#sidebar').show(); scroll.toggle(); setTimeout(initSlip, 100); stopBodySlide(); evt.stopPropagation(); evt.preventDefault(); for(var p in evt){ evt[p] = undefined; } return false; }); }*/ if($('#nav_forum').length > 0){ $('#nav_forum').click(function(){ if(document.getElementById('j_head_nav').style.display=="none"){ $('#j_head_nav').show(); }else{ $('#j_head_nav').hide(); } }); } initGlobal(); initBackTop(); if($('#j_imglist').length>0) initScrollview(); function hideByNum($siblings, num){ var len = $siblings.size(); var $sibling; for(var i = len; i > 0; i--){ if(num <=0 ){ break; } $sibling = $siblings.eq(i); if($sibling.height()){ $sibling.hide(); num--; } } } }; function cookie(key, value, options) { var days, time, result, decode if (arguments.length > 1 && String(value) !== "[object Object]") { options = options || {}; if (value === null || value === undefined) options.expires = -1 if (typeof options.expires === 'number') { days = (options.expires * 24 * 60 * 60 * 1000) time = options.expires = new Date() time.setTime(time.getTime() + days) } value = String(value) return (document.cookie = [ encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join('')) } options = value || {} decode = options.raw ? function (s) { return s } : decodeURIComponent return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null } function initBackTop(){ var btn = $('#j_back_top'); var wrap = btn.parent(); var win = $(window); var doc = $(document); wrap.click(function(){ window.scrollTo(0, 0); }); function updateBackTopButton(){ if(doc.height() > win.height()){ wrap.show(); } else{ wrap.hide(); } if(doc.height()-win.scrollTop()>1100){ $(".mod_download_sup").show(); }else{ $(".mod_download_sup").hide(); } setTimeout(updateBackTopButton, 1000); } if(cookie('srctype')=='android'){ $(".mod_download_sup").hide(); }else{ $(".header").show(); $(".j_hide_empty").show(); $(".footer").show(); updateBackTopButton(); } } function initGlobal(){ var doc = $(document) /* * 跳转标签 * setTimeout 500 毫秒是为了发出统计请求 */ function handleClick(){ $('[data-url]').each(function(i, el){ if(el.clickbined){ return; } el.clickbined = true; var $el = $(el); var url = $el.attr('data-url'); var tag = $el.attr('data-pvtag'); var isLink = $el.is('a'); var type = $el.attr('data-type'); if(url!="Pro_download" && isLink){ $el.attr('href', url) } if(url=="Pro_download" && isLink){ url = $el.attr('href'); } $el.on('click', function(evt){ if(type=="download"){ alert("down"); } if(type=="download" && ai.ovb.weixn()){ var Pro=document.getElementById("pro"); var ProBg=Pro.children[0]; var ProContent=Pro.children[1]; if(ai.ovb.ios()){//iPhone ProContent.innerHTML="额~~你好像是用微信打开的!请点击右上角的按钮,选择“在Safari中打开”,才能正常下载噢!"; }else if(ai.ovb.android()){//android ProContent.innerHTML="额~~你好像是用微信打开的!请点击右上角的按钮,选择“在浏览器中打开”,才能正常下载噢!"; } Pro.style.display='block'; return false; } //延迟一段时间,发两个统计请求 var delay = config.jumpDelay; setTimeout(function(){ window.location.href = url; }, delay); /* * 只响应最近的一个跳转地址 */ if(url){ evt.stopPropagation(); } if(isLink){ return false; } }); }) setTimeout(handleClick, 500); } handleClick(); /* * 阻止默认事件标签 */ doc.delegate('[data-nogo]', 'click', function(evt){ evt.preventDefault(); evt.stopPropagation(); }); } function initScrollview(){ var $imglist = $('#j_imglist'); var $img = $imglist.find('img') var size = $img.size(); var queue = {}; var counter = 0; var listWidth = 0; function complete(){ /** * 图片列表 */ new scrollview({ wrapSel : '#j_imglist_wrap', listSel : '#j_imglist', listWidth : listWidth + 30 }); } function check(){ $img.each(function(i, img){ if(!queue[img.src] && img.clientWidth){ queue[img.src] = 1; counter++; listWidth += img.clientWidth; } }); if(counter < size){ setTimeout(check, 100); } else{ complete(); } } check(); } }); define("ui/scrollview",function(require, exports, module){ var $ = require('lib/zepto'), ai = require('lib/ai'), slip = require('lib/slip'), undefined; function ScrollView(_options){ var options = $.extend({ wrapSel : '#giftlist-wrap', listSel : '#giftlist', itemSel : 'li', listWidth : 0 }, _options); var itemWidth, marginLeft, marginRight, listWidth, wrap = $(options.wrapSel), list = wrap.find(options.listSel), items = wrap.find(options.itemSel), firstItem = items.eq(0), itemNum = items.size(); if(options.listWidth){ listWidth = options.listWidth; } else{ itemWidth = firstItem.width() marginLeft = parseInt(firstItem.css('margin-left'), 10); marginRight = parseInt(firstItem.css('margin-right'), 10); itemWidth = itemWidth + marginLeft + marginRight; listWidth = itemWidth * itemNum; } list.width(listWidth); function updateScrollBar(){ var scrollbar = wrap.find('div').eq(1); if(ai.ww() > (listWidth)){ scrollbar.hide(); } else{ scrollbar.show(); } } var slipjs_dh = slip('px', list[0],{ direction: "x", width: ai.ww() - 20, bar_no_hide : true }); ai.resize(function() { slipjs_dh.refresh(); updateScrollBar(); }, false); updateScrollBar(); return; } return ScrollView; });