123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460 |
- /**
- * 首页初始化
- */
- 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="额~~你好像是用微信打开的!请点击右上角的按钮,选择“<span class='orange'>在Safari中打开</span>”,才能正常下载噢!";
- }else if(ai.ovb.android()){//android
- ProContent.innerHTML="<img style='float:right;' src='http://m.18183.com/images/pro.png'/>额~~你好像是用微信打开的!请点击右上角的按钮,选择“<span class='orange'>在浏览器中打开</span>”,才能正常下载噢!";
- }
- 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;
- });
|