Muat ulang halaman secara otomatis di Chrome tanpa plugin

12

Menggunakan plugin TabMixPlus untuk Firefox atau Chrome, saya dapat mengklik kanan sebuah halaman dan memilih "reload every ..." dan saya dapat memilih suatu interval.

Saya lebih suka tidak menginstal plugin kecuali saya benar-benar harus, dan saya sadar Anda bisa mengetikkan hal - hal khusus ke bilah alamat Chrome.

Ini membuat saya berpikir bahwa sesuatu seperti ini yang diketik langsung ke alamat mungkin berfungsi:

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

Saya belum mengelolanya, tetapi masih belum mau mengesampingkannya sebagai kemungkinan.

Apakah ini mungkin?

jon
sumber
Mengapa Anda menentang plugin? Jika Anda khawatir, tulis saja plugin Anda sendiri yang melakukan apa yang Anda inginkan.
Ramhound
Saya tidak menentang plugin, maaf jika terbaca seperti itu. Saya hanya ingin belajar sedikit tentang kemampuan bilah alamat Chrome :)
jon
Mengapa Anda belum mencoba mengetik ini di bilah alamat?
Toby Allen
Saya sudah, lihati haven't managed it yet
jon
Masalahnya adalah bahwa begitu Anda menelepon location.reload()dan halaman itu dimuat ulang, sejauh menyangkut Chrome, itu pada dasarnya seperti memuat halaman baru dan konteksnya semua baru (hal-hal yang Anda ketik sebelumnya hilang). Jadi, Anda perlu mempertahankan kode Anda entah bagaimana dan memiliki halaman yang sama, itulah sebabnya solusi iframe dari jawabannya.
ShreevatsaR

Jawaban:

13

Setelah 6 tahun saya punya solusi untuk ini!

Jawabannya terinspirasi oleh jawaban lain di sini.

Jawaban Edub tidak bekerja untuk saya, itu memuat ulang halaman berulang-ulang, dan tidak memperhatikan setIntervalparameter durasi. Saya tidak mengerti mengapa jawaban Edub tidak bekerja seperti yang diharapkan.

Ini berfungsi untuk saya di 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)

Versi yang diformat:

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
)

Ini berfungsi dengan mengganti badan dokumen saat ini dengan iframe yang menunjuk ke lokasi jendela saat ini.

Kemudian panggilan ke setInterval dibuat, yang membuat halaman memuat pada timer.

Ini berfungsi dengan baik sebagai bookmark. fungsi komplementer setInterval dapat dipanggil dengan bookmark juga:javascript:clearTimer(reloadTimer)

Catatan:

  • Beberapa situs mendeteksi mereka sedang diakses melalui iframe dan berupaya mencegah akses (Stack sites misalnya!)

  • Browser menghapus awalan javascript:saat menempel ke bilah alamat sehingga harus dimasukkan secara manual. Namun javascript:tidak dilucuti jika dimasukkan melalui bookmark.

jon
sumber
11

Anda dapat melakukannya melalui Alat Pengembang Chrome menggunakan kombinasi tombol ctrl+shift+j. Muat halaman yang Anda inginkan, katakan misalnya: http://www.w3schools.com/jsref/dom_obj_frame.asp lalu tekan ctrl+shift+juntuk membuka alat pengembang. Klik kanan pada tag tubuh dan pilih edit sebagai html ganti konten dalam (biarkan tag dan tag penutup tetap utuh) dengan yang berikut ini:

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

untuk berhenti mengedit sebagai html Anda dapat menekan escatau mengklik salah satu tag di luar yang sedang Anda edit. Halaman harus mulai memuat ulang setiap 10 detik, Anda dapat menutup alat pengembang jika Anda mau dan itu akan terus menyegarkan, tidak perlu plugin :)

Justin Buser
sumber
Terima kasih Justin, ini berhasil, jadi saya telah memilih, tapi itu bukan jawaban yang saya cari sehingga akan membiarkan pertanyaan terbuka dengan harapan :) Juga, F12 bukan?
jon
3

Mengambil solusi dari Justin Buser satu langkah lebih jauh menuntun saya ke:

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

Gagasan untuk menyematkan situs dalam iframe agar dapat memuatnya kembali berfungsi dengan baik (kurasa). Saya baru saja menulis beberapa kode untuk mendapatkan body elment dan mengganti innerhtml dengan Iframe ke url saat ini.

Dengan cara ini dimungkinkan untuk membookmark beberapa kode JavaScript dan menjalankannya di situs mana saja untuk memuatnya kembali. Semoga ini bisa membantu.

Edub
sumber