Automatycznie przeładuj stronę w Chrome bez wtyczki


12

Korzystając z wtyczki TabMixPlus dla przeglądarki Firefox lub Chrome, mogę kliknąć stronę prawym przyciskiem myszy i wybrać „przeładuj co ...” i mogę wybrać interwał.

Wolę nie instalować wtyczki, chyba że naprawdę muszę, i wiem, że możesz wpisać specjalne rzeczy w pasku adresu Chrome.

To sprawia, że ​​myślę, że coś takiego wpisanego bezpośrednio w adres może działać:

javascript:setInterval(window.location.reload(), 2000); //2 secs`

Jeszcze tego nie zrobiłem, ale nadal nie chcę wykluczyć takiej możliwości.

czy to możliwe?


Dlaczego jesteś przeciwko wtyczce? Jeśli tak się martwisz, po prostu napisz własną wtyczkę, która robi dokładnie to, co chcesz.
Ramhound,

Nie jestem przeciwny wtyczkom, przepraszam, jeśli tak to brzmi. Chciałbym tylko dowiedzieć się nieco więcej o możliwościach paska adresu Chrome :)
jon

Dlaczego nie próbowałeś wpisać tego w pasku adresu?
Toby Allen,

Mam, patrzi haven't managed it yet
jon

Problem polega na tym, że gdy zadzwonisz, location.reload()a strona przeładuje się, w przypadku Chrome jest to po prostu ładowanie nowej strony, a kontekst jest nowy (rzeczy, które wcześniej wpisałeś, są tracone). Musisz więc jakoś utrwalić swój kod i mieć tę samą stronę, dlatego rozwiązanie iframe odpowiedzi.
ShreevatsaR

Odpowiedzi:


13

Po 6 latach mam na to rozwiązanie!

Odpowiedź jest inspirowana innymi odpowiedziami tutaj.

Odpowiedź Eduba nie działała dla mnie, wczytywała stronę w kółko i nie obserwowała setIntervalparametru czasu trwania. Nie rozumiem, dlaczego odpowiedź Eduba nie działa zgodnie z oczekiwaniami.

Działa to dla mnie w Chrome 67:

javascript:document.getElementsByTagName("body")[0].innerHTML = "<iframe id=\"testFrame\" src=\""+window.location.toString()+"\" style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\"><\/iframe>";reloadTimer = setInterval(function(){ document.getElementById("testFrame").src=document.getElementById("testFrame").src },10000)

Wersja sformatowana:

document.getElementsByTagName("body")[0].innerHTML = 
"<iframe id=\"testFrame\" 
        src=\"" + window.location.toString() + "\" 
      style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\">
<\/iframe>";
reloadTimer = setInterval(
    function(){ 
        document.getElementById("testFrame").src=document.getElementById("testFrame").src
    },
    10000
)

Działa to poprzez zastąpienie bieżącej treści dokumentu ramką iframe wskazującą bieżącą lokalizację okna.

Następnie wykonywane jest wywołanie setInterval, które powoduje ponowne załadowanie strony do timera.

Działa to dobrze jako zakładka. Uzupełniającą funkcję setInterval można również wywołać przez zakładkę:javascript:clearTimer(reloadTimer)

Uwagi:

  • Niektóre witryny wykrywają, że dostęp do nich odbywa się za pośrednictwem elementu iframe, i próbują uniemożliwić dostęp (na przykład stos witryn!)

  • Przeglądarki usuwają prefiks javascript:podczas wklejania do paska adresu, więc należy wprowadzić go ręcznie. Jednak javascript:nie jest usuwany, jeśli zostanie wprowadzony za pomocą zakładki.


11

Możesz to zrobić za pomocą Narzędzi Chrome dla programistów, używając kombinacji klawiszy ctrl+shift+j. Załaduj żądaną stronę, na przykład: http://www.w3schools.com/jsref/dom_obj_frame.asp, a następnie naciśnij, ctrl+shift+jaby otworzyć narzędzia programistyczne. Kliknij znacznik body prawym przyciskiem myszy i wybierz edytuj, ponieważ html zastąp zawartość wewnętrzną (pozostawiając nietknięty tag i zamykając tagi nienaruszone):

<iframe id="testFrame" src="http://www.w3schools.com/jsref/dom_obj_frame.asp" style="position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;" onload="setInterval(document.getElementById('testFrame').contentWindow.location.reload(), 10000);"></iframe>

aby przerwać edycję jako HTML, możesz albo nacisnąć esclub kliknąć jeden z tagów poza edytowanym. Strona powinna się ładować co 10 sekund, jeśli chcesz, możesz zamknąć narzędzia programistyczne i będzie się odświeżać, nie potrzebujesz wtyczki :)


Dzięki Justin, to działa, więc głosowałem, ale to nie jest odpowiedź, której szukałem, więc zostawię pytanie otwarte w nadziei :) Także, F12 non?
jon

3

Krok dalej od rozwiązania Justina Busera doprowadził mnie do:

document.getElementsByTagName("body")[0].innerHTML = "<iframe id=\"testFrame\" src=\""+window.location.toString()+"\" style=\"position: absolute; top:0; left:0; right:0; bottom:0; width:100%; height:100%;\" onload=\"setInterval(document.getElementById(\'testFrame\').contentWindow.location.reload(), 10000);\"><\/iframe>"

Pomysł osadzenia strony w ramce iframe, aby móc ją ponownie załadować, działa dobrze (tak sądzę). Właśnie napisałem kod, aby pobrać element ciała i zastąpić innerhtml iframe do bieżącego adresu URL.

W ten sposób można dodać zakładkę do kodu JavaScript i uruchomić go w dowolnej witrynie, aby go ponownie załadować. Mam nadzieję, że to pomoże.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.