รีเฟรช / โหลดแท็บเบราว์เซอร์ที่ใช้งานอยู่จากบรรทัดคำสั่งหรือไม่


28

ฉันกำลังพยายามตั้งค่า toolchain แบบกำหนดเองโดยที่เบราว์เซอร์ (Firefox หรือที่นิยมกว่าคือ Chrome) มักจะถูกบังคับให้รีเฟรชจาก commandline บ่อยครั้งหรือบ่อยครั้ง / บ่อยครั้ง

(ความคิดคือการเห็นการเปลี่ยนแปลงที่มองเห็นได้ทันทีใน html / webapp ฉันกำลังแก้ไขในเฟรม Emacs ที่อยู่ติดกัน - โดยไม่ต้องแท็บไปยังเบราว์เซอร์อย่างต่อเนื่องเพื่อทำการรีเฟรชด้วยตนเอง)

google-chrome FILE_PATHที่ใกล้เคียงที่สุดที่ผมได้มาเพื่อให้ห่างไกลคือการวิ่ง อย่างไรก็ตามสิ่งนี้จะเปิดแท็บใหม่ทุกครั้ง

มีวิธีอื่นหรือไม่?


1
ฉันจะพยายามที่จะเริ่มต้นจากสิ่งที่ชอบรถยนต์โหลด
จัดการ

อาขอบคุณสำหรับสิ่งนี้ ฉันคิดว่านี่เป็นสิ่งที่ไม่ต้องทำเนื่องจากเป็น Mac เท่านั้น แต่ดูเหมือนว่ามีบางสิ่งที่น่าสนใจมากขึ้นที่github.com/guard/guard-livereload
thomanil

เห็นได้ชัดว่า Firefox สามารถควบคุมจากระยะไกลได้ แต่ฉันไม่สามารถใช้งานได้ บางทีคุณอาจมีโชคดีกว่า
amenthes

คำตอบ:


13

มีบางอย่างให้เล่นด้วย

มันใช้xdotoolซึ่งช่วยให้คุณสามารถสคริปต์การกระทำ windows / เดสก์ทอป หากคุณระบุชื่อของเบราว์เซอร์เป็นอาร์กิวเมนต์มันจะค้นหาและโหลดหน้าปัจจุบันใหม่ คุณสามารถตั้งค่าเบราว์เซอร์เริ่มต้นดังนั้นคุณไม่จำเป็นต้องจัดหาทีละครั้งและคุณสามารถเปลี่ยนได้ว่าคุณส่ง CTRL-R เพื่อโหลดซ้ำหรือ SHIFT-CTRL-R เพื่อโหลดซ้ำโดยไม่แคช

มันควรจะพลิกไปที่เบราว์เซอร์ของคุณโหลดหน้าเว็บจากนั้นกลับไปที่หน้าต่างใดก็ตามที่คุณเรียกสิ่งนี้ ฉันใช้สิ่งนี้บ่อยครั้งโดยการวางเบราว์เซอร์ไว้ในพื้นหลังโดยมีหน้าต่างตัวแก้ไขตั้งค่าเป็น 'ON-TOP' ดังนั้นจึงสามารถมองเห็นได้เสมอกดคีย์นี้หรือเรียกจากตัวแก้ไขของคุณและมันจะกลับมาโฟกัสเมื่อเสร็จ

ฉันเป็นผู้ใช้เป็นกลุ่มและฉันเห็นการสร้างข้อความอัตโนมัติเพื่อเรียกสคริปต์นี้โดยอัตโนมัติเมื่อใดก็ตามที่มีการเขียนไฟล์ที่กำหนดดังนั้นเบราว์เซอร์จะรีเฟรชเมื่อเหมาะสมฉันรู้ว่าคุณสามารถทำเช่นเดียวกันได้

#!/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 สิ่งดีๆ! โปรดทราบว่า--nameพารามิเตอร์นั้นตรงกับสตริงที่แสดงในแถบหัวเรื่องหน้าต่างดังนั้นจึงอาจไม่ได้มีชื่อของเบราว์เซอร์ดังตัวอย่างที่นี่
rebus

@rebus เกี่ยวกับ --class หรือ --classname หรือไม่
กุมภ์กุมภ์

6

@ lornix คำตอบไม่ได้ผลสำหรับฉัน (ฉันไม่แน่ใจว่าทำไมอาจเป็นไปได้ว่าตัวจัดการหน้าต่างของฉันไม่ยอมให้ xdotool เปลี่ยน windows) ฉันเขียนเวอร์ชันที่แก้ไขแล้วซึ่งควรมีความทนทานมากกว่านี้

  1. ไม่ทำการสลับที่ไม่จำเป็นระหว่าง windows
  2. จำกัด ตัวเองในหน้าต่างที่มองเห็นได้
  3. รีเฟรชหน้าต่างที่มองเห็นได้ทั้งหมด

(นอกจากนี้ยังใช้ F5 แทน Ctrl-R แต่เป็นเพราะฉันมี Ctrl-R ผูกไว้กับอย่างอื่น)

#!/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

ฉันควรเพิ่มสิ่งนี้ดูเหมือนจะไม่ทำงานกับโครเมียมและฉันไม่รู้ว่าทำไม
dshepherd

ฉันชอบเห็นสคริปต์ทุบตีเขียนดี! โดยวิธีการที่โครเมียมทำงานถ้าคุณใช้windowfocusก่อนที่สำคัญ แน่นอนว่าคุณต้องทำการคืนค่าโฟกัสก่อนหน้า
hackerb9

6

หากคุณใช้ Firefox การโหลดอัตโนมัติเป็นส่วนเสริมที่โหลดใหม่เมื่อใดก็ตามที่ไฟล์มีการเปลี่ยนแปลง คุณสามารถเพิ่มไฟล์ไดเรกทอรีหรือ localhost และแก้ไขตัวกรองที่ใช้ regex เพื่อที่คุณจะได้สิ่งที่ต้องการ ฉันไม่รู้อะไรเพิ่มเติมเกี่ยวกับสิ่งนี้ใน Chrome ลิงค์: https://addons.mozilla.org/en-US/firefox/addon/auto-reload/


1
ไม่ทำงานอีกต่อไปเศร้า
Gringo Suave

2

สำหรับ OS X คุณสามารถใช้ applescript นี้:

activate application "Firefox"
tell application "System Events" to keystroke "r" using command down
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.