Jak mogę wyłączyć wyskakujące okienka / alerty w javascript w Chrome?

20

Przepraszam, jeśli został o to poproszony. Znalazłem już kilka rozwiązań, które nie działają. Nie jestem pewien, co robię źle.

Nie chcę wyłączać wszystkich skryptów JavaScript, tylko pola alertów JavaScript. Te, które wyskakują i zmuszają cię do kliknięcia OK lub X, aby je zamknąć.

Znalazłem skrypty użytkowników, które twierdzą, że to robią (przykład: http://userscripts.org/scripts/show/58252 ). Włączyłem chrome na kanale deweloperskim, uruchamiam chrome z przełącznikiem --enable-user-scripts, skrypt wyświetla się jako zainstalowany.

Ale nadal dostaję pola ostrzeżeń.

Przykładowe ostrzeżenie, które nie wyłącza się, znajduje się na stronie http://wordswithfriends.net/ - umieść dowolne słowo śmieci w walidatorze słów na prawym pasku bocznym. Pojawia się wyskakujące okienko z informacją, że to nie jest słowo.

CreeDorofl
źródło

Odpowiedzi:

17

Jedynym sposobem wyłączenia pól alertów jest zainstalowanie rozszerzenia lub skryptu użytkownika. Skrypt użytkownika, który podłączyłeś, jest przeznaczony dla Firefoksa Greasemonkey i nie będzie działał w Chrome.

Dodatkowo, strona, którą źle przywołujesz, jest podstępna i uruchamia ten „weryfikator słów” w iframekodzie z kodem, który uruchamia się alert()natychmiast po przeładowaniu iframe.

Ale oto skrypt użytkownika, który go pokonuje:

// ==UserScript==
// @name        Wordswithfriends, Block javascript alerts
// @match       http://wordswithfriends.net/*
// @run-at      document-start
// ==/UserScript==

addJS_Node (null, null, overrideSelectNativeJS_Functions);

function overrideSelectNativeJS_Functions () {
    window.alert = function alert (message) {
        console.log (message);
    }
}

function addJS_Node (text, s_URL, funcToRun) {
    var D                                   = document;
    var scriptNode                          = D.createElement ('script');
    scriptNode.type                         = "text/javascript";
    if (text)       scriptNode.textContent  = text;
    if (s_URL)      scriptNode.src          = s_URL;
    if (funcToRun)  scriptNode.textContent  = '(' + funcToRun.toString() + ')()';

    var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
    targ.appendChild (scriptNode);
}

Jeśli naprawdę chcesz wyłączyć WSZYSTKIE alerts()na WSZYSTKICH stronach (niezalecane), usuń // @matchwiersz.

Brock Adams
źródło
7
Przyjąłem tę odpowiedź tak mocno, że moja mysz eksplodowała. Działa jak marzenie. Dziękuję bardzo ^^
CreeDorofl
Nie ma za co! Miło, że mogłem pomóc.
Brock Adams,
Dlaczego nie zaleca się wyłączania wszystkich alertów? Nigdy nie spotkałem się z przydatnymi alertami oprócz „czy naprawdę chcesz wyjść z tej karty” na niezapisanych stronach postępu.
Coretek,
Nie działa, jeśli strona wyświetla alerty podczas ładowania.
riv
@riv, otwórz nowe pytanie, jeśli masz przypadek, w którym to nie działa. Pamiętaj, aby podać kompletny przepis na duplikację problemu.
Brock Adams,
2

Istnieje co najmniej jedno rozszerzenie do tego w Chrome Web Store . Działa dla mnie, choć wydaje się nieco podejrzane, że ma opcjonalną obsługę według trybów reklam, które można wyłączyć na stronie ustawień. (Nie znalazłem ustawienia, ale uznałem, że nie zaszkodzi to zerowaniu routingu api.s13.us.)

ecmanaut
źródło
0

Jeśli szukasz narzędzia do tego i nie chcesz zadzierać ze skryptami użytkownika - istnieje fajne narzędzie, które poradzi sobie z każdym irytującym okienkiem w systemie Windows - ClickOff . Możesz go pobrać stąd . Sprawdziłem, działa z alertem „Wprowadzone zmiany mogą nie zostać zapisane” dla witryn SharePoint.

Serhiy
źródło
brzmi to interesująco, ponieważ irytujące wyskakujące okienka błędów byłyby ogólnie przyjemne do usunięcia. Czy pozwala dokładnie określić, jakie okna dialogowe mają być automatycznie OK / anulować, czy też jakoś sam je wybiera?
CreeDorofl
Tak, możesz określić, które okna dialogowe mają zostać zamknięte, i przycisk do kliknięcia.
Serhiy,