Đây là code để tạo popunder (quảng cáo popup) đơn giản và dễ dàng nhất
Code này làm việc trên Firefox, Chrome, IE
Đặc biệt là có thể popup nhiều link mà không sợ bị google chrome chặn như mấy cái code khác
Tính năng
Nhược điểm
Update
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
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
Code này làm việc trên Firefox, Chrome, IE
Đặc biệt là có thể popup nhiều link mà không 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à không phải sửa nhiều code
- Chống bị google chrome blocker
- Hoạt động độc lập, không 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 30 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)
Update
- 25/7/2013 - Do hơi chủ quan nên ko test ở IE 6, 7, 8, nên popup không hoạt động, đã fix
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
Code:
/**
* @author Phan Thanh Cong <chiplove.9xpro at gmail dot com>
* @since June 14, 2012
* @version 1.2
* @since Jul 25, 2013 - Fixed bugs on IE 6,7,8
***** CHANGE LOGS *****
* 1.2 - Jul 5, 2013 - Anti Google Chrome Blocker
* 1.3 - Jul 25, 2013 - Fixed bugs on IE 6,7,8
*/
var Light = Light || {};
Light.Popup = {
popName: 'Chip-LightPopup',
alwaysPop: false, // refresh = new pop
onNewTab: true,
/**
* 1: window onclick,
* 2: window onload -> document onclick
*/
eventType: 1,
defaults: {
width: window.screen.width,
height: window.screen.height,
left: 0,
top: 0,
location: 1,
tollbar: 1,
status: 1,
menubar: 1,
scrollbars: 1,
resizable: 1
},
newWindowDefaults: {
width: window.screen.width - 20,
height: window.screen.height - 20
},
__newWindow: {
scrollbars: 0
},
__counter: 0,
create: function (link, options) {
var optionsOriginal = options = options || {},
me = this;
var popName = me.popName + '_' + (me.__counter++);
var keys = ['onNewTab', 'eventType', 'cookieExpires', 'alwaysPop'];
for (var i in keys) {
var key = keys[i];
if (typeof options[key] != 'undefined') {
eval('var ' + key + ' = options.' + key);
delete options[key];
} else {
eval('var ' + key + ' = me.' + key);
}
}
if (alwaysPop) {
cookieExpires = -1;
}
for (var i in me.defaults) {
if (typeof options[i] == 'undefined') {
options[i] = me.defaults[i];
if (!onNewTab && typeof me.newWindowDefaults[i] != 'undefined') {
options[i] = me.newWindowDefaults[i];
}
}
}
for (var i in me.__newWindow) {
options[i] = me.__newWindow[i];
}
var params = [];
for (var i in options) {
params.push(i + '=' + options[i]);
}
params = params.join(',');
var executed = false;
var execute = function () {
if (me.cookie(popName) === null && !executed) {
// Jul 5, 2013 - Anti Google Chrome Blocker
if (typeof window.chrome != 'undefined' && navigator.userAgent.indexOf('Windows') != -1 && typeof ___lastPopTime != 'undefined' && ___lastPopTime + 5 > new Date().getTime()) {
return;
}
executed = true;
if (onNewTab) {
var w = window.open(link, popName);
} else {
var w = window.open(link, '_blank', params);
}
w.blur();
window.focus();
me.cookie(popName, 1, cookieExpires);
// Jul 5, 2013 - Anti Google Chrome Blocker
___lastPopTime = new Date().getTime();
if (navigator.userAgent.indexOf('Mac OS') != -1 && typeof window.chrome != 'undefined') {
setTimeout(function () {
if (!w.innerWidth || !w.document.documentElement.clientWidth) {
me.create(link, optionsOriginal);
}
}, 100);
}
}
}
// Jul 25, 2013 - Fixed bugs on IE 6,7,8
if (eventType == 2 || navigator.userAgent.match(/msies+(6|7|8)/i)) {
if (!window.addEventListener) {
window.attachEvent("onload", function () {
document.body.attachEvent("onclick", execute);
});
} else {
window.addEventListener("load", function () {
document.body.addEventListener("click", execute);
});
}
} else if (eventType == 1) {
if (!window.addEventListener) {
window.attachEvent("onclick", execute);
} else {
window.addEventListener("click", execute);
}
}
},
cookie: function (name, value, days) {
if (arguments.length == 1) {
var cookieMatch = document.cookie.match(new RegExp(name + "=[^;]+", "i"));
return (cookieMatch) ? decodeURIComponent(cookieMatch[0].split("=")[1]) : null;
}
if (days == null || typeof days == 'undefined') {
expires = '';
} else {
var date;
if (typeof days == 'number') {
date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
} else {
date = days;
}
expires = '; expires=' + date.toUTCString();
}
var value = escape(value) + expires + "; path=/";
document.cookie = name + "=" + value;
}
};
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
Code:
Light.Popup.create('link 1', {onNewTab: true}); // cái này để mở pop ra new tab
Light.Popup.create('link 2', {onNewTab: false, width: 100, height:100}); // cái này để mở ra cửa sổ mới nhỏ nhỏ
// muốn nó ở góc màn hình để ẩn đi thì thêm options sau
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ỏ
// 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
Light.Popup.create('link 1', {onNewTab: true, cookieExpires: 1});
// nếu muốn cứ f5 lại có popup tiếp thì
Light.Popup.create('link 1', {onNewTab: true, alwaysPop: true});