2015-08-19 2 views
1

Привет, ребята, у меня есть баннер, который я разработал с помощью библиотеки mootools. Баннер отображается только на смартфонах, но вы можете увидеть его с помощью инструментов Chrome Dev, используя режим переключателя. Вот ссылка BannerБаннер не закрыт и остается закрытым по ссылке

Моя проблема заключается в том, что на баннере есть ссылка «Не показывать это снова», и она не работает.

Это часть кода, который я использую. Он использует файл cookie. Может ли кто-нибудь сообщить мне, почему он не стреляет. Я посмотрел и посмотрел, и просто не могу понять.

/* Do not show window again */ 
window.addEventListener('load', function() { 

    if ($('#appnotice')) { 

     var appnoticecloseElems = $$('.appnoticeclose'), 
      appnoticecloseperm = $$('.appnoticecloseperm'), 
      appnotice = $('#appnotice'), 
      appnoticeHeight = appnotice.height(), 
      appnoticePaddingTop = Math.abs(appnoticeHeight.toInt() - 5000), 
      bypassappnotice = Cookie.read('bypassappnotice'); 

     appnotice.css('padding-top', appnoticePaddingTop); 

     function appnoticeOpen() { 
      console.log('appnoticeOpen'); 
      appnotice.css('display','block'); 
     } 

     function appnoticeClose() { 
      console.log('appnoticeClose'); 
      appnotice.css('display','none'); 
     } 

     appnoticecloseElems.each(function(el, index) { 
      $(el).click(function(){ 
       console.log('appnoticeclose'); 
       var bypassappnotice = Cookie.write('bypassappnotice', 'true'); 
       appnoticeClose(); 
      }); 
     }); 

     appnoticecloseperm.each(function(el, index) { 
      el.click(function(){ 
       console.log('appnoticecloseperm'); 
       var bypassappnotice = Cookie.write('bypassappnotice', 'true', { 
        duration: 120 
       }); 
       appnoticeClose(); 
      }); 
     }); 
    } 

    if (bypassappnotice != 'true') { 

     /* Detect Smartphone */ 
     var mobile = (/android/i.test(navigator.userAgent.toLowerCase())); 
     if (mobile) { 

      var userAgent = navigator.userAgent.toLowerCase(); 
      if ((userAgent.search("android") > -1) && (userAgent.search("mobile") > -1)) 

       var element = document.getElementById("apppage").style.display = "none"; 
      var element = document.getElementById("googlePlayBadge") 
       .innerHTML = "<a href='https://play.google.com/store/apps/details?id=com.fiserv.touchbankingasp&hl=en' target='_blank'><img src='https://developer.android.com/images/brand/en_generic_rgb_wo_60.png'></a>"; 

     } 

     var mobile = (/iphone/i.test(navigator.userAgent.toLowerCase())); 
     if (mobile) { 
      var userAgent = navigator.userAgent.toLowerCase(); 
      if ((userAgent.search("iphone") > -1) && (userAgent.search("mobile") > -1)) 

       var element = document.getElementById("apppage").style.display = "none"; 
      var element = document.getElementById("appStoreBadge") 
       .innerHTML = "<a href='https://itunes.apple.com/us/app/touchbanking/id386678211?mt=8' target='_blank'><img src='http://linkmaker.itunes.apple.com/images/badges/en-us/badge_appstore-lrg.png'></a>"; 

     } 
    } 
}); 

/* Dismiss window ones */ 
function hideshow(which) { 
    if (!document.getElementById) 
     return 
    if (which.style.display == "block") 
     which.style.display = "none" 
    else 
     which.style.display = "block" 
} 
}; 
+0

Если вы можете сделать jaFiddle, было бы здорово. Легче проверить и помочь. – Sergio

+0

Sergio Я не могу использовать jsFiddle, потому что я использую document.write, а jsFiddle не позволяет этого. Я пошел и добавил сюда [link] (https://jsbin.com/babavo/edit?html,js,output) – Alverto

+0

Можете ли вы подробнее объяснить, что не работает? Какое поведение вы ожидаете и чего не получаете? – Sergio

ответ

0

Если возможно, избавиться от одной из двух библиотек (jQuery/mootools). Если это невозможно, используйте, по крайней мере, jQuery.noConflict(), в mootools избегайте знака $ или используйте или используйте The Dollar Safe Mode. Помимо лишнего внимания, это действительно затрудняет понимание того, что здесь происходит. , например. el.click - в vanilla js запускается щелчок по этому элементу, если el является простым dom элемент - тот же, что и mootools, потому что элементы mootools по-прежнему являются элементами (которые я оцениваю btw) - в jquery это может быть $ (el) его somthing как el.addEventListener ('click', ..), последним в mootools будет el.addEvent()

так что возвращает $$ ('. appnoticeclose') - элементы mootools или объекты jquery , имеет большое значение. Также может быть состояние гонки, в котором библиотека загружается последним.

+0

P.S. , чтобы получить элемент по id в jQuery: $ ('# my_id') в mootools: $ ('my_id') , поэтому ваш if ($ ('# appnotice')) {...}, возможно, никогда не будет правдой, если функция доллара от mootools –

Смежные вопросы