Làm mới / tải lại tab trình duyệt hoạt động từ dòng lệnh?


28

Tôi đang cố gắng thiết lập một chuỗi công cụ tùy chỉnh trong đó trình duyệt (Firefox hay tốt hơn là Chrome) thường xuyên / thường xuyên / liên tục bị buộc phải làm mới từ dòng lệnh.

(Ý tưởng là ngay lập tức nhìn thấy những thay đổi trực quan trong html / webapp tôi đang chỉnh sửa trong khung Emacs liền kề - mà không phải liên tục chuyển sang trình duyệt để làm mới thủ công.)

Gần nhất tôi đã đi cho đến nay là để chạy google-chrome FILE_PATH. Tuy nhiên điều này mở ra một tab mới mỗi lần.

Có cách tiếp cận nào khác không?


1
Tôi sẽ cố gắng bắt đầu từ một cái gì đó như Tự động tải lại .
manatwork

Ah cảm ơn bạn vì điều này. Lần đầu tiên tôi nghĩ rằng đây là điều không nên vì chỉ có Mac, nhưng có vẻ như có một thứ gì đó đa nền tảng hơn tại github.com/guard/guard-livereload
thomanil

Firefox rõ ràng có thể được điều khiển từ xa , nhưng tôi không thể làm cho nó hoạt động được. Có lẽ bạn có may mắn hơn.
amenthes

Câu trả lời:


13

Một cái gì đó để chơi với

Nó sử dụng xdotool , cho phép bạn thực hiện các thao tác trên windows / desktop. Nếu bạn cung cấp tên của trình duyệt làm đối số, nó sẽ tìm và tải lại trang hiện tại. Bạn có thể đặt trình duyệt mặc định, do đó bạn không cần cung cấp một trình duyệt mỗi lần và bạn có thể thay đổi xem bạn có gửi CTRL-R để tải lại hay SHIFT-CTRL-R để tải lại mà không cần bộ đệm.

sẽ lật đến trình duyệt của bạn, tải lại trang, sau đó lật lại bất kỳ cửa sổ nào bạn gọi nó từ đây. Tôi sử dụng điều này thường xuyên bằng cách đặt trình duyệt ở chế độ nền, với cửa sổ trình chỉnh sửa được đặt thành 'ON-TOP' để nó luôn hiển thị, nhấn phím tập lệnh này hoặc gọi nó từ trình chỉnh sửa của bạn và nó sẽ trả lại trọng tâm của bạn khi hoàn tất.

Tôi là người dùng vim và tôi có thể thấy tạo một trình tự động tự động kích hoạt tập lệnh này bất cứ khi nào một tập tin nhất định được viết, vì vậy trình duyệt sẽ làm mới khi thích hợp, tôi biết bạn có thể làm tương tự.

#!/bin/bash
#
# L Nix <lornix@lornix.com>
# reload browser window
#
# whether to use SHIFT+CTRL+R to force reload without cache
RELOAD_KEYS="CTRL+R"
#RELOAD_KEYS="SHIFT+CTRL+R"
#
# set to whatever's given as argument
BROWSER=$1
#
# if was empty, default set to name of browser, firefox/chrome/opera/etc..
if [ -z "${BROWSER}" ]; then
    BROWSER=firefox
fi
#
# get which window is active right now
MYWINDOW=$(xdotool getactivewindow)
#
# bring up the browser
xdotool search --name ${BROWSER} windowactivate --sync
# send the page-reload keys (C-R) or (S-C-R)
xdotool search --name ${BROWSER} key --clearmodifiers ${RELOAD_KEYS}
#
# sometimes the focus doesn't work, so follow up with activate
xdotool windowfocus --sync ${MYWINDOW}
xdotool windowactivate --sync ${MYWINDOW}
#

+1 công cụ tuyệt vời! Lưu ý rằng --nametham số khớp với chuỗi được hiển thị trên thanh tiêu đề của cửa sổ để nó không phải lúc nào cũng chứa tên của trình duyệt như trong ví dụ ở đây.
rebus

@rebus thì sao về - class hay - classname?
Sức mạnh Bảo Bình

6

Câu trả lời của @ lornix không hoàn toàn phù hợp với tôi (Tôi không chắc tại sao, có thể người quản lý cửa sổ của tôi không cho phép xdotool chuyển cửa sổ). Tôi đã viết một phiên bản sửa đổi nên mạnh mẽ hơn, nó:

  1. Không thực hiện chuyển đổi không cần thiết giữa các cửa sổ
  2. Giới hạn bản thân với các cửa sổ có thể nhìn thấy
  3. Làm mới tất cả các cửa sổ có thể nhìn thấy

(Ngoài ra, nó sử dụng F5 thay vì Ctrl-R, nhưng đó chỉ là do tôi có Ctrl-R bị ràng buộc với thứ khác.)

#!/bin/bash

set -o errexit
set -o nounset

keystroke="CTRL+F5"

# set to whatever's given as argument, defaults to firefox
BROWSER="${1:-firefox}"

# find all visible browser windows
browser_windows="$(xdotool search --sync --all --onlyvisible --name ${BROWSER})"

# Send keystroke
for bw in $browser_windows; do
    xdotool key --window "$bw" "$keystroke"
done

Tôi nên thêm cái này dường như không hoạt động với crom và tôi hoàn toàn không biết tại sao.
dshepherd

Tôi thích nhìn thấy một kịch bản bash được viết tốt! Nhân tiện, crom hoạt động nếu bạn sử dụng tiêu điểm trước cửa sổ . Tất nhiên, sau đó bạn phải khôi phục trọng tâm trước đó.
hackerb9

6

Nếu bạn đang sử dụng Firefox, Tự động tải lại là một tiện ích mở rộng nơi nó tải lại bất cứ khi nào tệp thay đổi. Bạn có thể thêm tệp, thư mục hoặc localhost và chỉnh sửa các bộ lọc dựa trên regex để bạn sẽ đạt được những gì bạn muốn. Tôi không biết bất kỳ bổ sung nào cho điều này trong Chrome. liên kết: https://addons.mozilla.org/en-US/firefox/addon/auto-reload/


1
Không còn làm việc nữa, thật đáng buồn.
Gringo Suave

2

Đối với OS X, bạn có thể sử dụng bit applescript này:

activate application "Firefox"
tell application "System Events" to keystroke "r" using command down
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.