(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();
}
})();
ARE you fed up of wrapping up warm in oversized knit jumpers, chunky boots and cosy scarfs?
Well, the good news is, the clocks go forward an hour on 31st March, meaning that spring is well and truly on its way.
But if your wardrobe is is desperate need of a replenish before the warmer weather hits, then look no further - because fashion fans are claiming they've found the "perfect" dress to replace your winter staples.
And the best part of all? The bargain buy costs just £17.50.
👉 For more insights, check out this resource.
So, whether you've got a holiday booked or just want to get super organised before rays of sunshine arrive, it turns out M&S is the place to be.
The online product description reads: "Beat the heat in tropical climes with this printed beach dress.
👉 Discover more in this in-depth guide.
"It comes in a regular fit with gathers at the round neck and tiers through the mini swing skirt for an airy effect.
"The strappy style accentuates the breathable feel."
Available in sizes ranging from size 8-24,
The online product description reads: "Beat the heat in tropical climes with this printed beach dress.
"It comes in a regular fit with gathers at the round neck and tiers through the mini swing skirt for an airy effect.
"The strappy style accentuates the breathable feel."
M&S show off all its bag dupes including the £35 Celine look-a-like and the iconic Cos quilted number for £50 cheaper
It's little surprise fashion fans have rushed online, flooding the comments with five-star reviews.
"Ideal summer dress for my holiday abroad. Nice light floaty dress," wrote one.
A second penned: "Very pleased with my purchase, excellent fit in my size 8, lovely fabric, excellent price."
A third commented: "The dress I bought was black and white but I already have the blue and white one!
"A great guess for holidays and can be dressed up or down . I would love it in different colours as it’s so comfortable to wear."
Meanwhile, a fourth praised: "I have a black dress like this for a couple of years and take it away every time I go on holiday.
"Lovely light material and I find it so much more cooler and practical than shorts in the sun going to the beach.
Read More on The US Sun
"I just wish M&S did more colours and patterns in this dress. Believe me, they would sell because every time I look at these they are out of stock and I have to asked to be notified if they come back."
And one more added: "Perfect! Love this dress great for over a swimsuit. Quality good wish you did more colours. True to size."