Greasy Fork is available in English.

讨论 » 创建请求

Disable Clicking anywhere on the page opens a new tab with ads

§
发表于:2016-07-30

Disable Clicking anywhere on the page opens a new tab with ads

On some pages whenever you click on anything it triggers the opening of a new tab with publicity. The publicity is blocked by an ad block addon and the new tab briefly displays as data: some random numbers and letters and closes after a second or 2 and it's very bothersome specially on some sites on which this happens very frequently. Is there a way to block it from ever opening?

I've tried many adblock filters and asked help from the ABP community and Ublock community but they couldn't do anything about it.

Tried messing with cookies to see if the timer was recorded as a cookie one could edit but that wasn't the case.

Some examples of those kinds of pages are: http://animeflv.net/ , http://gorillavid.in/s6nrdihcyboz

This is the script the animeflv page uses (the most bothersome one) : http://pastebin.com/WndgXM0u

woxxom管理员
§
发表于:2016-07-31
编辑于:2016-07-31

Here's a script for the first site:

v2

// ==UserScript==
// @name          prevent pop-ad
// @include       http://animeflv.net/*
// @run-at        document-start
// @grant         none
// ==/UserScript==

(function() {
    document.addEventListener('DOMContentLoaded', function() {
        jQuery._data(document, 'events').mouseup = null;
        window.oncontextmenu = null;

        var lastCleanup = Date.now();
        var timeoutCleanup;
        new MutationObserver(function cleanUp(mutations) {
            if (Date.now() - lastCleanup < 100)
                return setTimeout(cleanUp, 111);
            lastCleanup = Date.now();
            if (timeoutCleanup)
                clearTimeout(timeoutCleanup);
            [].forEach.call(document.querySelectorAll('div[style*="z-index"]'), function(e) {
                if (e.style.zIndex > 10000000)
                    e.style.cssText = 'width:0; height:0';
            });
        }).observe(document, {subtree:true, childList:true});
    });

    var __addEventListener = window.addEventListener;
    window.addEventListener = document.addEventListener = function(type, fn, capture) {
        console.log(this, type, fn); // debug logging
        if (/^(ceop|click|mousedown|mouseup|mousemove|contextmenu)$/.test(type)) {
            console.log('Prevented', type, 'registration on', this, fn);
        } else {
            __addEventListener.call(this, type, fn, capture);
        }
    };
})();
§
发表于:2016-07-31

Thanks a lot.

§
发表于:2016-07-31

Hmm I noticed the scripts block pressing on the play button of the videos so there is no way to load them.

woxxom管理员
§
发表于:2016-07-31
编辑于:2016-07-31

Can't reproduce. The video play button works for me (Chrome+Tampermonkey).

§
发表于:2016-07-31
编辑于:2016-07-31

I downloaded chrome just to test this and I got the same results the only thing is that if I right clicked then I was able to do the rest till the event triggered again then I would have to right click again to enable the left click. (Chrome 52.0.2743.82 x86 stable).

If you were able to press the play button might have been cause you got lucky and the event didn't trigger on page load or something. Try going to the homepage and then open an other link to an episode.

woxxom管理员
§
发表于:2016-07-31
编辑于:2016-07-31

Indeed. Dunno why it worked the first time, probably some cookies were set. This time I think I've nailed it, see the v2 code above.

§
发表于:2016-07-31
编辑于:2016-07-31

Works great for the most part. On options 5, 6 and 7 of the example page below the pop up opens almost every time when you click anywhere on the video space (seems to be something related with the type of player they use). Thanks a lot again for the new version.

Ex page http://animeflv.net/ver/nanatsu-no-taizai-17.html

woxxom管理员
§
发表于:2016-08-01
编辑于:2016-08-01

Yeah, the iframes contain blocking divs inside.

v3:

// ==UserScript==
// @name          prevent pop-ad
// @include       http://animeflv.net/*
// @include       http://embed.nowvideo.sx/embed*
// @include       http://embed.novamov.com/embed*
// @include       http://www.auroravid.to/embed*
// @include       http://embed.videoweed.es/embed*
// @include       http://www.bitvid.sx/embed*
// @include       http://mz.yourupload.com/rotate/yourupload/*
// @include       http://www.mp4upload.com/embed*
// @run-at        document-start
// @grant         none
// ==/UserScript==

(function() {
    document.addEventListener('DOMContentLoaded', function() {
        try { jQuery._data(document, 'events').mouseup = null; } catch(e) {}
        window.oncontextmenu = null;

        document.head.insertAdjacentHTML('beforeend',
            '<style>div[style*="z-index"], div[style*="fixed"] { pointer-events:none!important }</style>');
    });

    var __addEventListener = window.addEventListener;
    window.addEventListener = document.addEventListener = function(type, fn, capture) {
        //console.log(this, type, fn); // debug logging
        if (/^(ceop|click|mousedown|mouseup|mousemove|contextmenu)$/.test(type)) {
            //console.log('Prevented', type, 'registration on', this, fn);
        } else {
            __addEventListener.call(this, type, fn, capture);
        }
    };
})();
§
发表于:2016-08-01
编辑于:2016-08-01

Seems to work great now. Thank you so much.

BTW do you know if it's possible to change the user agent and vendor version with userscript?

§
发表于:2017-05-25

Is it possible to use this with https://gomovies.to/

§
发表于:2017-05-25
编辑于:2017-05-28

The navigator.userAgent property is read-only based on the test I just did.

See gnblizz's comment below:

§
发表于:2017-05-28
Object.defineProperty(navigator, "userAgent", {value: 'fake browser'});

发表回复

登录以发表回复。