-
Notifications
You must be signed in to change notification settings - Fork 0
/
prebidjs_example.html
122 lines (105 loc) · 4.51 KB
/
prebidjs_example.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Prebid.js Article</title>
<script async src="js/prebid.js"></script>
<script>
// Client Conf start
let zoneId = 84;
let fid = "74573ca50989ca7a888aec7e7ea37ca2db6f45dc";
let siteId = "10";
let bannerSizes = [
[300, 250]
];
let catIab = []; // if available - ex.: ["IAB1-5", "IAB1-7"]
// Client Conf end
// ======== DO NOT EDIT BELOW THIS LINE =========== //
function userIpCallback(user_ip) {
userIpLoaded = true;
if (user_ip.hasOwnProperty('ip')) userIp = user_ip.ip;
}
function hashCode(str, seed = 0) {
let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
for (let i = 0, ch; i < str.length; i++) {
ch = str.charCodeAt(i);
h1 = Math.imul(h1 ^ ch, 2654435761);
h2 = Math.imul(h2 ^ ch, 1597334677);
}
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
return 4294967296 * (2097151 & h2) + (h1 >>> 0);
}
let PREBID_TIMEOUT = 5000;
let userIp = 0;
let userIpLoaded = false;
let impression_id = hashCode(new Date().getTime().toString());
let ip_script = document.createElement("script");
ip_script.type = "text/javascript";
ip_script.src = "https://api.ipify.org?format=jsonp&callback=userIpCallback";
document.getElementsByTagName('head')[0].appendChild(ip_script);
let adUnits = [{
code: 'postbid_iframe',
mediaTypes: {
banner: {
sizes: bannerSizes
}
},
bids: [{
bidder: 'exadsadserver',
params: {
zoneId: zoneId,
fid: fid,
siteId: siteId,
catIab: catIab,
userIp: 0, // DO NOT EDIT - Client side data
impressionId: impression_id.toString() // DO NOT EDIT - Custom hash
}
}]
}];
var pbjs = pbjs || {};
pbjs.que = pbjs.que || [];
// Init when IP data is available
function initBids() {
if (userIpLoaded === false) {
window.setTimeout(initBids, 50);
} else {
for (let i = 0; i < adUnits.length; i++) {
for (let t = 0; t < adUnits[i].bids.length; t++) {
adUnits[i].bids[t].params.userIp = userIp;
}
}
pbjs.que.push(function () {
pbjs.addAdUnits(adUnits);
pbjs.requestBids({
timeout: PREBID_TIMEOUT,
bidsBackHandler: function () {
let iframe = document.getElementById('postbid_iframe');
let iframeDoc = iframe.contentWindow.document;
let adServerTargeting = pbjs.getAdserverTargetingForAdUnitCode('postbid_iframe');
// If any bidders return any creatives
if (adServerTargeting && adServerTargeting['hb_adid']) {
pbjs.renderAd(iframeDoc, adServerTargeting['hb_adid']);
} else {
iframe.width = bannerSizes[0][0];
iframe.height = bannerSizes[0][1];
iframeDoc.write('<head></head><body>' + passbackTagHtml + '</body>');
iframeDoc.close();
}
}
});
});
}
}
initBids();
// Define the passback HTML tag here.
// Note that this tag is usually in either Script tag form or iFrame form.
let passbackTagHtml = '<iframe src="//a.adnflow.com/iframe.php?idzone=88&size=300x250" width="300" height="250" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>';
</script>
</head>
<body>
<h2>Prebid.js Example</h2>
<h5>Div-1</h5>
<iframe id='postbid_iframe' frameborder="0" scrolling="no" marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" allowtransparency="true" width="0" height="0"></iframe>
</body>
</html>