Javascript Popunder Maker - Code tạo nhiều popunder dễ dàng

Posted by Admin, on 24/07/2013 11:04 PM in HTML, CSS, JavaScript with 11,547 views and 3 Comments

Code này dùng để tạo popunder (quảng cáo popup) dễ dàng hơn, làm việc tốt trên FF, Chrome, IE

Đặc biệt là có thể popup nhiều link mà ko sợ bị google chrome chặn như mấy cái code khác

Tính năng

  • Set popup với nhiều options khác nhau
  • Popup được nhiều link cùng lúc mà ko phải sửa nhiều code
  • Chống bị google chrome block
  • Hoạt động độc lập, ko cần dùng tới thư viện bên ngoài như jquery hay bất kỳ cái gì khác
  • Gọn nhẹ
  • Chạy tốt với Chrome 28 mới nhất hiện tại và các phiên bản FF khác
  • Popup chạy nhanh

Nhược điểm

  • Nếu google chrome để allow popunder cho 1 số site mình set thì có thể nó sẽ popup ra nhiều lần (nhưng tỉ lệ người rỗi hơi đi allow cho từng url để nó nhảy ra popup là cực kỳ ít và chắc chẳng ai ... đến nối như vậy)

Mình đã test trên cả Mac OS và Windows (mượn của người khác để test và code luôn) thì ok, tuy nhiên có thể sau này vẫn có bug phát sinh ^^! cái này ko lường trước đc, có gì thì sẽ update sau

Nguồn: https://github.com/ptcong/js-popunder

  1. /**
  2.  * @author        Phan Thanh Cong <chiplove.9xpro at gmail dot com>
  3.  * @since        June 14, 2012
  4.  * @version        1.2
  5.  * @since        Jul 25, 2013 - Fixed bugs on IE 6,7,8
  6.  ***** CHANGE LOGS *****
  7.  * 1.2 - Jul 5, 2013 - Anti Google Chrome Blocker
  8.  * 1.3 - Jul 25, 2013 - Fixed bugs on IE 6,7,8
  9. */
  10. var Light = Light || {};
  11. Light.Popup = {
  12.     popName: 'Chip-LightPopup',
  13.     alwaysPop: false, // refresh = new pop
  14.     onNewTab: true,
  15.     /**
  16.      * 1: window onclick,
  17.      * 2: window onload -> document onclick
  18.      */
  19.     eventType: 1,
  20.     defaults: {
  21.         width: window.screen.width,
  22.         height: window.screen.height,
  23.         left: 0,
  24.         top: 0,
  25.         location: 1,
  26.         tollbar: 1,
  27.         status: 1,
  28.         menubar: 1,
  29.         scrollbars: 1,
  30.         resizable: 1
  31.     },
  32.     newWindowDefaults: {
  33.         width: window.screen.width - 20,
  34.         height: window.screen.height - 20
  35.     },
  36.     __newWindow: {
  37.         scrollbars: 0
  38.     },
  39.     __counter: 0,
  40.     create: function (link, options) {
  41.         var optionsOriginal = options = options || {},
  42.             me = this;
  43.         var popName = me.popName + '_' + (me.__counter++);
  44.         var keys = ['onNewTab', 'eventType', 'cookieExpires', 'alwaysPop'];
  45.         for (var i in keys) {
  46.             var key = keys[i];
  47.             if (typeof options[key] != 'undefined') {
  48.                 eval('var ' + key + ' = options.' + key);
  49.                 delete options[key];
  50.             } else {
  51.                 eval('var ' + key + ' = me.' + key);
  52.             }
  53.         }
  54.         if (alwaysPop) {
  55.             cookieExpires = -1;
  56.         }
  57.         for (var i in me.defaults) {
  58.             if (typeof options[i] == 'undefined') {
  59.                 options[i] = me.defaults[i];
  60.                 if (!onNewTab && typeof me.newWindowDefaults[i] != 'undefined') {
  61.                     options[i] = me.newWindowDefaults[i];
  62.                 }
  63.             }
  64.         }
  65.         for (var i in me.__newWindow) {
  66.             options[i] = me.__newWindow[i];
  67.         }
  68.         var params = [];
  69.         for (var i in options) {
  70.             params.push(i + '=' + options[i]);
  71.         }
  72.         params = params.join(',');
  73.         var executed = false;
  74.         var execute = function () {
  75.             if (me.cookie(popName) === null && !executed) {
  76.                 // Jul 5, 2013 - Anti Google Chrome Blocker
  77.                 if (typeof window.chrome != 'undefined' && navigator.userAgent.indexOf('Windows') != -1 && typeof ___lastPopTime != 'undefined' && ___lastPopTime + 5 > new Date().getTime()) {
  78.                     return;
  79.                 }
  80.                 executed = true;
  81.                 if (onNewTab) {
  82.                     var w = window.open(link, popName);
  83.                 } else {
  84.                     var w = window.open(link, '_blank', params);
  85.                 }
  86.                 w.blur();
  87.                 window.focus();
  88.                 me.cookie(popName, 1, cookieExpires);
  89.                 // Jul 5, 2013 - Anti Google Chrome Blocker
  90.                 ___lastPopTime = new Date().getTime();
  91.                 if (navigator.userAgent.indexOf('Mac OS') != -1 && typeof window.chrome != 'undefined') {
  92.                     setTimeout(function () {
  93.                         if (!w.innerWidth || !w.document.documentElement.clientWidth) {
  94.                             me.create(link, optionsOriginal);
  95.                         }
  96.                     }, 100);
  97.                 }
  98.             }
  99.         }
  100.         // Jul 25, 2013 - Fixed bugs on IE 6,7,8
  101.         if (eventType == 2 || navigator.userAgent.match(/msie\s+(6|7|8)/i)) {
  102.             if (!window.addEventListener) {
  103.                 window.attachEvent("onload", function () {
  104.                     document.body.attachEvent("onclick", execute);
  105.                 });
  106.             } else {
  107.                 window.addEventListener("load", function () {
  108.                     document.body.addEventListener("click", execute);
  109.                 });
  110.             }
  111.         } else if (eventType == 1) {
  112.             if (!window.addEventListener) {
  113.                 window.attachEvent("onclick", execute);
  114.             } else {
  115.                 window.addEventListener("click", execute);
  116.             }
  117.         }
  118.     },
  119.     cookie: function (name, value, days) {
  120.         if (arguments.length == 1) {
  121.             var cookieMatch = document.cookie.match(new RegExp(name + "=[^;]+", "i"));
  122.             return (cookieMatch) ? decodeURIComponent(cookieMatch[0].split("=")[1]) : null;
  123.         }
  124.         if (days == null || typeof days == 'undefined') {
  125.             expires = '';
  126.         } else {
  127.             var date;
  128.             if (typeof days == 'number') {
  129.                 date = new Date();
  130.                 date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
  131.             } else {
  132.                 date = days;
  133.             }
  134.             expires = '; expires=' + date.toUTCString();
  135.         }
  136.         var value = escape(value) + expires + "; path=/";
  137.         document.cookie = name + "=" + value;
  138.     }
  139. };

Cách sử dụng thì các bạn include file js ở trên vào site bạn, chỗ nào cũng được, sau đó dùng hàm sau để đặt popup, có thể đặt cho nhiều site

  1. Light.Popup.create('link 1', {onNewTab: true}); // cái này để mở pop ra new tab
  2. Light.Popup.create('link 2', {onNewTab: false, width: 100, height:100}); // cái này để mở ra cửa sổ mới nhỏ nhỏ
  3. // muốn nó ở góc màn hình để ẩn đi thì thêm options sau
  4. Light.Popup.create('link 2', {onNewTab: false, width: 100, height:100, top: window.screen.height, left: window.screen.width}); // cái này để mở ra cửa sổ mới nhỏ nhỏ
  5. // muốn popup set cookie theo thời gian 1 ngày thì như sau, nếu muốn là nửa ngày thì dùng 0.5
  6. Light.Popup.create('link 1', {onNewTab: true, cookieExpires: 1});
  7. // nếu muốn cứ f5 lại có popup tiếp thì
  8. Light.Popup.create('link 1', {onNewTab: true, alwaysPop: true});
Javascript Popunder Maker - Code tạo nhiều popunder dễ dàngJavascript Popunder Maker - Code tạo nhiều popunder dễ dàng
Nhận xét
Bạn còn ký tự