Cách tắt thông báo JavaScript cụ thể


2

Trên một trang web đang hoạt động tôi truy cập, có mã javascript này được hiển thị trên mỗi trang.

<script type="text/javascript">
(function(){var d=document;var i=d.getElementsByTagName('iframe');if(google_ad_client!=null||(window.getComputedStyle?d.defaultView.getComputedStyle(i[i.length-1],null).getPropertyValue('display'):i[i.length-1].currentStyle['display'])=='none'){

alert('Adblock detected, please consider disabling it')

}})()
</script>

Có cách nào để tôi có thể nhận được quảng cáo của mình - hoặc bất kỳ loại plugin nào khác - để vô hiệu hóa mã cụ thể đó mà không vô hiệu hóa tất cả javascript không?


Bên cạnh đó, tôi đã vô hiệu hóa hoàn toàn quảng cáo của mình. Kịch bản tiếp tục hiển thị cảnh báo. Có lẽ đó là do hệ điều hành của tôi là một bản phân phối Linux ..
D-Vee

Bất kể bình luận của bạn, những liên kết này có thể hữu ích: 1 , 2 . Về cơ bản, không có cách dễ dàng để vô hiệu hóa tập lệnh nội tuyến (có trong HTML), nhưng bạn có thể chặn tập lệnh bên ngoài. Nếu mã bạn đã đăng là một tập lệnh bên ngoài, thì đó là bản sao của câu hỏi này: superuser.com/q/278590/138020
amiregelz

Bạn có thể ghi đè lên alert sử dụng một usercript (tùy thuộc vào thời điểm mỗi phần được tải trong DOM). Một cái gì đó đơn giản như alert = function() {}; có thể làm việc.
nerdwaller

@nerdwaller Có thể sử dụng một cái gì đó như Phong cách để chỉnh sửa trang HTML để tập lệnh không làm gì không? Thứ hai, làm thế nào tôi có thể viết nó như là một usercript? Tôi có ít hoặc không có kinh nghiệm với javascript, nhưng tôi có thể đọc nó.
D-Vee

Sau khi nghiên cứu thêm một chút, Userscripts được chạy theo mọi thứ khác, vì vậy giải pháp đó không hoạt động. Tôi không quen thuộc với Phong cách đủ để cung cấp cho bạn bất cứ điều gì tốt về điều đó, xin lỗi!
nerdwaller

Câu trả lời:


4

Bạn có thể dùng Greasemonkey add-on để viết lại alert chức năng:

// ==UserScript==
// @name        Catch JS Alert
// @namespace   http://igalvez.net
// @include     http://*
// @version     1
// @grant       none
// @run-at      document-start
// ==/UserScript==

window.alert = function(message) {
    if(message == 'Adblock detected, please consider disabling it') {
        console.log(message);
    } else {
        confirm(message);
    }
}

Cách thức hoạt động như sau:

Nếu thông báo của hộp cảnh báo khớp với "Phát hiện quảng cáo, vui lòng xem xét việc vô hiệu hóa nó", sau đó loại bỏ nó đến bảng điều khiển JS (nó sẽ không được hiển thị). Nếu không, hiển thị hộp cảnh báo dưới dạng confirm cái hộp.


Tại sao không chỉ giữ một tài liệu tham khảo đến bản gốc alert?
Ry-

1
Thú vị, không biết @run-at Tùy chọn. Thông tin tuyệt vời, +1.
nerdwaller

Xin lỗi, nhưng điều đó dường như không hoạt động. o_O
D-Vee
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.