Автоматически перезагрузить страницу в Chrome без плагина

12

Используя плагин TabMixPlus для Firefox или Chrome, я могу щелкнуть правой кнопкой мыши страницу и выбрать «перезагрузить все ...», и я могу выбрать интервал.

Я бы предпочел не устанавливать плагин, если в этом нет необходимости, и я знаю, что вы можете вводить специальные вещи в адресную строку Chrome.

Это заставляет меня думать, что что-то вроде этого, напечатанное прямо в адресе, могло бы работать:

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

Я еще не справился, но все еще не хочу исключать это как возможность.

Это возможно?

джон
источник
Почему ты против плагина? Если вы беспокоитесь, просто напишите свой собственный плагин, который делает именно то, что вы хотите.
Ramhound
Я не против плагинов, извините, если это звучит так. Я просто хотел , чтобы узнать немного больше о возможностях Chrome в адресной строке в :)
Йон
Почему вы не попытались ввести это в адресную строку?
Тоби Аллен
У меня есть, видитеi haven't managed it yet
Джон
Проблема в том, что когда вы звоните location.reload()и страница перезагружается, то, что касается Chrome, это в основном похоже на загрузку новой страницы, и весь контекст является новым (вещи, которые вы вводили ранее, теряются). Поэтому вам нужно как-то сохранить свой код и сделать страницу одинаковой, поэтому решение ответа в iframe.
ShreevatsaR

Ответы:

13

Через 6 лет у меня есть решение для этого!

Ответ вдохновлен другими ответами здесь.

Ответ Эдуба не сработал для меня, он перезагружал страницу снова и снова и не соблюдал setIntervalпараметр длительности. Я не понимаю, почему ответ Эдуба не работает, как ожидалось.

Это работает для меня в 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)

Отформатированная версия:

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
)

Это работает, заменяя текущее тело документа на iframe, указывающий на текущее местоположение окна.

Затем выполняется вызов setInterval, который заставляет страницу перезагрузиться по таймеру.

Это хорошо работает в качестве закладки. Дополнительная функция setInterval также может вызываться закладкой:javascript:clearTimer(reloadTimer)

Ноты:

  • Некоторые сайты обнаруживают, что к ним обращаются через iframe, и пытаются заблокировать доступ (например, сайты Stack!)

  • Браузеры удаляют префикс javascript:при вставке в адресную строку, поэтому его нужно вводить вручную. Однако javascript:не удаляется, если введено через закладку.

джон
источник
11

Вы можете сделать это с помощью Chrome Developer Tools, используя комбинацию клавиш ctrl+shift+j. Загрузите нужную страницу, скажем, например: http://www.w3schools.com/jsref/dom_obj_frame.asp, затем нажмите, ctrl+shift+jчтобы открыть инструменты разработчика. Щелкните правой кнопкой мыши на теге body и выберите edit, так как html заменит внутреннее содержимое (оставив тег и закрывающий тег без изменений) следующим:

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

чтобы прекратить редактирование в формате html, вы можете нажать escили щелкнуть один из тегов вне того, который вы редактируете. Страница должна перезагружаться каждые 10 секунд, вы можете закрыть инструменты разработчика, если хотите, и она продолжит обновляться, плагин не нужен :)

Джастин Бузер
источник
Спасибо, Джастин, это работает, так что я проголосовал, но это не тот ответ, который я искал, поэтому оставлю вопрос открытым в надежде :) Кроме того, F12 не?
джон
3

Приняв решение от Джастина Бьюзера, я сделал еще один шаг:

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

Идея встроить сайт в iframe, чтобы иметь возможность перезагрузить его, работает нормально (я думаю). Я просто написал некоторый код, чтобы получить элемент body и заменить innerhtml на Iframe для текущего URL.

Таким образом, можно добавить в закладки некоторый код JavaScript и запустить его на любом сайте, чтобы перезагрузить его. Надеюсь, поможет.

Edub
источник