Tự động tải lại trang trong Chrome mà không cần plugin


12

Sử dụng plugin TabMixPlus cho Firefox hoặc Chrome, tôi có thể nhấp chuột phải vào một trang và chọn "tải lại mỗi ..." và tôi có thể chọn một khoảng.

Tôi không muốn cài đặt plugin trừ khi tôi thực sự phải làm vậy và tôi biết rằng bạn có thể nhập những thứ đặc biệt vào thanh địa chỉ của Chrome.

Điều này khiến tôi nghĩ rằng một cái gì đó như thế này được gõ thẳng vào địa chỉ có thể hoạt động:

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

Tôi chưa quản lý được nó, nhưng vẫn không muốn loại trừ nó như một khả năng.

Điều này có thể không?


Tại sao bạn chống lại một plugin? Nếu bạn lo lắng, chỉ cần viết plugin của riêng bạn mà làm chính xác những gì bạn muốn.
Ramhound

Tôi không chống lại các plugin, xin lỗi nếu nó đọc như vậy. Tôi chỉ muốn tìm hiểu một chút thêm về khả năng thanh địa chỉ của Chrome :)
jon

Tại sao bạn chưa thử gõ cái này vào thanh địa chỉ?
Toby Allen

Tôi đã, xemi haven't managed it yet
jon

Vấn đề là một khi bạn gọi location.reload()và trang tải lại, theo như Chrome quan tâm thì về cơ bản nó giống như tải một trang mới và bối cảnh hoàn toàn mới (những thứ bạn đã nhập trước đó bị mất). Vì vậy, bạn cần phải duy trì mã của mình bằng cách nào đó và có trang giống nhau, đó là lý do giải pháp iframe của câu trả lời.
ShreevatsaR

Câu trả lời:


13

Sau 6 năm tôi có một giải pháp cho việc này!

Câu trả lời được lấy cảm hứng từ các câu trả lời khác ở đây.

Câu trả lời của Edub không hiệu quả với tôi, nó tải lại trang nhiều lần và không quan sát setIntervalthông số thời lượng. Tôi không hiểu tại sao câu trả lời của Edub không hoạt động như mong đợi.

Điều này hoạt động với tôi trong 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)

Phiên bản định dạng:

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
)

Điều này hoạt động bằng cách thay thế phần thân tài liệu hiện tại bằng iframe trỏ đến vị trí hiện tại của cửa sổ.

Sau đó, một cuộc gọi đến setInterval được thực hiện, điều đó làm cho trang tải lại vào bộ đếm thời gian.

Điều này hoạt động tốt như một dấu trang. Hàm bổ sung của setInterval cũng có thể được gọi bằng bookmark:javascript:clearTimer(reloadTimer)

Ghi chú:

  • Một số trang web phát hiện ra chúng đang được truy cập thông qua iframe và cố gắng ngăn chặn truy cập (Chẳng hạn như các trang web Stack!)

  • Các trình duyệt loại bỏ tiền tố javascript:khi dán vào thanh địa chỉ để nó phải được nhập bằng tay. Tuy nhiên javascript:không bị tước nếu được nhập qua bookmark.


11

Bạn có thể làm điều đó thông qua Công cụ dành cho nhà phát triển Chrome bằng cách sử dụng tổ hợp phím ctrl+shift+j. Tải trang bạn muốn, ví dụ: http://www.w3schools.com/jsref/dom_obj_frame.asp sau đó nhấn ctrl+shift+jđể mở các công cụ dành cho nhà phát triển. Nhấp chuột phải vào thẻ body và chọn chỉnh sửa dưới dạng html thay thế nội dung bên trong (giữ nguyên thẻ và đóng thẻ) bằng cách sau:

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

để dừng chỉnh sửa dưới dạng html, bạn có thể nhấn eschoặc nhấp vào một trong các thẻ bên ngoài thẻ bạn đang chỉnh sửa. Trang sẽ bắt đầu tải lại cứ sau 10 giây, bạn có thể đóng các công cụ của nhà phát triển nếu bạn thích và nó sẽ tiếp tục làm mới, không cần plugin :)


Cảm ơn Justin, điều này hoạt động vì vậy tôi đã nâng cao, nhưng đó không phải là câu trả lời tôi đang tìm kiếm nên sẽ để lại câu hỏi mở trong hy vọng :) Ngoài ra, F12 không?
jon

3

Lấy giải pháp từ Justin Buser một bước nữa dẫn tôi đến:

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

Ý tưởng nhúng trang web vào iframe để có thể tải lại nó hoạt động tốt (tôi đoán vậy). Tôi vừa viết một số mã để lấy phần thân và thay thế tệp nội tuyến bằng Iframe thành url hiện tại.

Bằng cách này, có thể đánh dấu một số mã JavaScript và kích hoạt nó tại bất kỳ trang web nào để tải lại. Hy vọng nó giúp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.