(function () {
// 1) Basic bot filter (extend if you like)
function isBot() {
return /(bot|crawl|spider|google|bing|slurp|yandex|facebook|linkedin|pinterest|preview|whatsapp|discord|telegram|headless|puppeteer)/i
.test(navigator.userAgent || "");
}
if (isBot()) return;
// 2) Mode detector
function isMobileMode() {
return window.matchMedia("(max-width: 767px)").matches ||
/Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent || "");
}
// 3) Your ad configs (swap keys/sizes to match your network units)
const AD = {
mobile: { key: "aa6d52a6037d0558c2a19dc52b6aa824", width: 320, height: 50 }, // 320x50
desktop: { key: "a49752dcde88f4fde5987d25efbb7168", width: 468, height: 60 } // 468x60
};
// 4) Create container if it doesn't exist
function ensureContainer() {
let container = document.getElementById("ad-container");
if (!container) {
container = document.createElement("div");
container.id = "ad-container";
container.style.display = "none";
document.body.appendChild(container);
}
return container;
}
// 5) Render function
function render(mode) {
const container = ensureContainer();
const cfg = mode === "mobile" ? AD.mobile : AD.desktop;
// Set global atOptions for ad network
window.atOptions = {
key: cfg.key,
format: "iframe",
height: cfg.height,
width: cfg.width,
params: {}
};
// Clear previous ad/script then inject
container.innerHTML = "";
container.style.display = "block";
const s = document.createElement("script");
s.src = `//selfportraitproved.com/${cfg.key}/invoke.js`;
s.async = true;
container.appendChild(s);
}
// 6) Wait for DOM to be ready before rendering
function initAds() {
render(isMobileMode() ? "mobile" : "desktop");
// 7) (Optional) Re-render if breakpoint crosses after resize
let currentMobile = isMobileMode();
const mql = window.matchMedia("(max-width: 767px)");
if (mql.addEventListener) {
mql.addEventListener("change", (e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
} else if (mql.addListener) { // older browsers
mql.addListener((e) => {
const nowMobile = e.matches;
if (nowMobile !== currentMobile) {
currentMobile = nowMobile;
render(currentMobile ? "mobile" : "desktop");
}
});
}
}
// 8) Execute when DOM is ready
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", initAds);
} else {
initAds();
}
})();
Of course the MTV EMAs are supposed to be about the artists, awards and amazing performances… but it seems singer Ellie Goulding stole the limelight when she stepped out onto the red carpet last night in Milan sporting freshly dyed bright yellow hair and a floor-length black dress. The low V cut design of the dress and its thigh-high split allowed the star to show off quite a lot of cleavage and a bit of leg, as you can see below.
Goulding, aged 28, is stunning – there is no argument there. However, the new look doesn’t seem to be everyone’s cup of tea, with the response to the Brit’s appearance on the likes of Twitter being mixed. Some think the dare paid off, exclaiming the singer expressed her sexuality perfectly and was styled well to grab some well deserved attention. Others, on the other hand, claim the dress was not flattering for her toned frame or that there was just too much going on.
The Herefordshire chart success also wore the ensemble to perform (and absolutely slay) her hit single ‘Love Me Like You Do’ during the awards show, choosing to swap thin-strapped high heels for black boots and pull back the luminous hair into a simple ponytail.
👉 For more insights, check out this resource.
But what’s your opinion on the ‘On My Mind’ songstress’ bold look for last night’s EMAs? Have your say by leaving a comment or tweeting us @CelebMix
👉 Discover more in this in-depth guide.