两种JavaScript实现网页广告屏蔽检测方法及示例代码
检测方法
1.广告请求检测:在网页加载时,可以通过检查广告请求是否成功来确定广告是否被屏蔽。你可以使用开发者工具或浏览器扩展程序,查看网络请求并确认广告请求是否发送成功。
2.DOM元素检测:广告通常会在网页上以特定的DOM元素形式展示。你可以通过检查这些元素是否存在来确定广告是否显示。使用JavaScript或jQuery等前端技术,可以搜索或遍历DOM元素以查找广告标识。
示例代码
广告请求检测
// 在DOM加载完成后运行检测代码 document.addEventListener('DOMContentLoaded', function() { // 发送测试广告请求 var adRequest = new XMLHttpRequest(); adRequest.open('GET', 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js', true); adRequest.onload = function() { if (adRequest.status >= 200 && adRequest.status < 400) { console.log('广告请求成功!'); } else { console.log('广告请求失败,可能被屏蔽!'); } }; adRequest.onerror = function() { console.log('广告请求失败,可能被屏蔽!'); }; adRequest.send(); });上述代码使用 XMLHttpRequest 对象发送一个测试广告请求,并根据请求的返回状态判断广告是否被屏蔽。如果广告请求返回状态码在 200 到 399 之间,表示请求成功,输出 '广告请求成功!'。否则,输出 '广告请求失败,可能被屏蔽!'。
DOM元素检测
// 在DOM加载完成后运行检测代码 document.addEventListener('DOMContentLoaded', function() { // 检查广告容器元素是否存在 var adContainer = document.getElementById('yourAdContainerId'); if (adContainer) { // 监听窗口滚动和调整大小事件 window.addEventListener('scroll', checkAdVisibility); window.addEventListener('resize', checkAdVisibility); // 初始检查广告可见性 checkAdVisibility(); } else { console.log('找不到广告容器元素!'); } }); // 检查广告容器元素的可见性 function checkAdVisibility() { var adContainer = document.getElementById('yourAdContainerId'); var isVisible = isElementVisible(adContainer); if (isVisible) { console.log('广告显示正常!'); } else { console.log('广告可能被屏蔽!'); } } // 检查元素是否在用户可见区域内 function isElementVisible(element) { var rect = element.getBoundingClientRect(); var viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight); return !(rect.bottom < 0 || rect.top - viewHeight >= 0); }
在上述代码中,你需要将 'yourAdContainerId' 替换为实际广告容器元素的ID。代码使用 getElementById 方法获取广告容器元素,并在页面滚动和调整大小时监听事件,调用 checkAdVisibility 函数来检测广告容器元素的可见性。
每当窗口滚动或调整大小时,都会触发 checkAdVisibility 函数,该函数通过调用 isElementVisible 函数来判断广告容器元素是否在用户可见区域内。如果广告容器元素可见,将输出 '广告显示正常!',否则输出 '广告可能被屏蔽!'。