Mặc dù tuổi của câu hỏi này, gần đây tôi thấy nó rất hữu ích và do đó chỉ có thể cho rằng có những người khác vẫn đang xem nó. Sau khi xem ở đây và các nơi khác, tôi phỏng đoán rằng ba khách hàng chính kiểm tra gián tiếp phát hiện trình chặn quảng cáo là để kiểm tra các tài nguyên bị chặn div
/ img
, bị chặn iframe
và bị chặn (tệp javascript).
Có thể nó vượt quá đỉnh hoặc hoang tưởng nhưng nó bao trùm cho các hệ thống chặn quảng cáo chỉ chặn một hoặc hai trong số các lựa chọn và do đó có thể không được bảo hiểm nếu bạn chỉ thực hiện một kiểm tra.
Trên trang bạn đang chạy kiểm tra thêm: (Tôi đang sử dụng jQuery)
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="advertisement.js"></script>
<script type="text/javascript" src="abds.js"></script>
và thêm bất cứ nơi nào khác trên trang:
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
Tôi đã sử dụng một div với tên mồi cũng như hình ảnh được lưu trữ bên ngoài với văn bản "Quảng cáo" và trong các kích thước được sử dụng bởi AdSense (cảm ơn địa điểm.it!).
Trong advertisement.js
bạn nên thêm một cái gì đó vào tài liệu mà chúng ta có thể kiểm tra sau này. Mặc dù có vẻ như bạn đang làm giống như trước đây, nhưng thực tế bạn đang kiểm tra chính tệp ( advertisement.js
) đang được tải chứ không phải đầu ra.
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
Và sau đó, tập lệnh phát hiện trình chặn quảng cáo kết hợp mọi thứ
$(document).ready(function()
{
var ifr = '<iframe id="adServer" src="http://ads.google.com/adserver/adlogger_tracker.php" width="300" height="300"></iframe>';
$("body").append(ifr);
});
$(window).on("load",function()
{
var atb = $("#myTestAd");
var atb2= $("#myTestAd2");
var ifr = $("#adServer");
setTimeout(function()
{
if( (atb.height()==0) ||
(atb.filter(":visible").length==0) ||
(atb.filter(":hidden").length>0) ||
(atb.is("hidden")) ||
(atb.css("visibility")=="hidden") ||
(atb.css("display")=="none") ||
(atb2.html()!="check") ||
(ifr.height()!=300) ||
(ifr.width()!=300) )
{
alert("You're using ad blocker you normal person, you!");
}
},500);
});
Khi tài liệu đã sẵn sàng , tức là đánh dấu được tải, chúng tôi cũng thêm iframe vào tài liệu. Sau đó, khi cửa sổ được tải , tức là nội dung bao gồm. hình ảnh được tải, chúng tôi kiểm tra:
- Kích thước và khả năng hiển thị của div thử nghiệm đầu tiên.
- Đó là nội dung của div thử nghiệm thứ hai là "kiểm tra", như nó đã có nếu
advertimsent.js
đã không bị chặn.
- Kích thước (và tôi đoán khả năng hiển thị, vì một đối tượng ẩn không có chiều cao hoặc chiều rộng?) Của iframe
Và các phong cách:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
Hi vọng điêu nay co ich