Recharger automatiquement la page dans Chrome sans plugin


12

En utilisant le plugin TabMixPlus pour Firefox ou Chrome, je peux faire un clic droit sur une page et choisir "recharger tous les ..." et je pourrais choisir un intervalle.

Je préfère ne pas installer de plugin sauf si je le dois vraiment, et je suis conscient que vous pouvez taper des choses spéciales dans la barre d'adresse de Chrome.

Cela me fait penser que quelque chose comme ça tapé directement dans l'adresse pourrait fonctionner:

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

Je ne l'ai pas encore réussi, mais je ne veux toujours pas l'exclure comme une possibilité.

Est-ce possible?


Pourquoi êtes-vous contre un plugin? Si vous êtes si inquiet, écrivez simplement votre propre plugin qui fait exactement ce que vous voulez.
Ramhound

Je ne suis pas contre les plugins, désolé si ça se lit comme ça. J'aimerais simplement en savoir un peu plus sur les capacités de la barre d'adresse de Chrome :)
jon

Pourquoi n'avez-vous pas essayé de taper ceci dans la barre d'adresse?
Toby Allen

Je, voiri haven't managed it yet
jon

Le problème est qu'une fois que vous appelez location.reload()et que la page se recharge, en ce qui concerne Chrome, c'est essentiellement comme charger une nouvelle page et le contexte est tout nouveau (les choses que vous avez tapées précédemment sont perdues). Vous devez donc conserver votre code d'une manière ou d'une autre et que la page soit la même, c'est pourquoi la solution iframe de la réponse.
ShreevatsaR

Réponses:


13

Après 6 ans, j'ai une solution pour ça!

La réponse est inspirée des autres réponses ici.

La réponse d'Edub n'a pas fonctionné pour moi, elle a rechargé la page encore et encore et n'a pas observé setIntervalle paramètre de durée de. Je ne comprends pas pourquoi la réponse d'Edub ne fonctionne pas comme prévu.

Cela fonctionne pour moi dans 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)

Version formatée:

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
)

Cela fonctionne en remplaçant le corps du document actuel par un iframe pointant vers l'emplacement actuel de la fenêtre.

Ensuite, un appel à setInterval est effectué, ce qui fait recharger la page sur une minuterie.

Cela fonctionne bien comme un signet. La fonction complémentaire de setInterval peut également être appelée par un signet:javascript:clearTimer(reloadTimer)

Remarques:

  • Certains sites détectent qu'ils sont accessibles via iframe et tentent d'empêcher l'accès (Stacker des sites par exemple!)

  • Les navigateurs suppriment le préfixe javascript:lors du collage dans la barre d'adresse, il doit donc être saisi manuellement. Cependant, il javascript:n'est pas supprimé s'il est entré via un signet.


11

Vous pouvez le faire via les outils de développement Chrome en utilisant une combinaison de touches ctrl+shift+j. Chargez la page que vous voulez, dites par exemple: http://www.w3schools.com/jsref/dom_obj_frame.asp puis appuyez sur ctrl+shift+jpour ouvrir les outils de développement. Cliquez avec le bouton droit sur la balise body et sélectionnez edit as html remplacez le contenu interne (en laissant la balise et les balises fermées intactes) par ce qui suit:

<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>

pour arrêter la modification au format html, vous pouvez esccliquer ou cliquer sur l'une des balises en dehors de celle que vous modifiez. La page devrait commencer à se recharger toutes les 10 secondes, vous pouvez fermer les outils de développement si vous le souhaitez et elle continuera de se rafraîchir, aucun plugin nécessaire :)


Merci Justin, cela fonctionne donc j'ai voté positivement, mais ce n'est pas la réponse que je cherchais donc je vais laisser la question ouverte dans l'espoir :) Aussi, F12 non?
jon

3

Prendre la solution de Justin Buser un peu plus loin m'a conduit à:

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>"

L'idée d'intégrer le site dans un iframe pour pouvoir le recharger fonctionne très bien (je suppose). Je viens d'écrire du code pour obtenir l'élément corporel et remplacer le innerhtml par un Iframe à l'url actuelle.

De cette façon, il est possible de mettre en signet du code JavaScript et de le tirer sur n'importe quel site pour le recharger. J'espère que cela aide.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.