Как я могу перезагрузить все мои браузеры на Linux? - PullRequest
2 голосов
/ 10 ноября 2010

Я веб-дизайнер и, конечно, мне приходится работать с каждым основным браузером (без IE 6, потому что это такая боль в заднице, а мне нужна png прозрачность без каких-либо обходных путей).Я искал способ запустить и перезагрузить Firefox, браузер Webkit (Chrome) и IE 7 & 8 одновременно.

(я получил ответ для своих нужд, что я будупост для справки других, но я уверен, что есть лучший способ сделать это.)

Ответы [ 2 ]

5 голосов
/ 10 ноября 2010

Вот как я это решил:

Открытые браузеры:

  • Google Chrome
  • Firefox
  • VirtualBox с Win XP работает:
    • IE 7
    • IE 8

В коде моего сайта есть статический заголовок, так что я могу ссылаться на каждое окно браузера через егоназвание.Например, заголовок «Это мой заголовок для всех страниц» приводит к появлению в окне Firefox названия «Это мой заголовок для всех страниц - Mozilla Firefox».

В режиме compiz я устанавливаю сочетание клавиш (Ctrl +j, потому что это легко достижимо), который запустил скрипт в / home / username / bin с именем refresh_all (не забудьте сделать этот исполняемый файл).

Вот содержимое файла refresh_all

#!/bin/bash

currentwindow=`xdotool getwindowfocus`

id=`xdotool search --title '[Site Title] - Google Chrome'`
xdotool windowmap $id
if [ $? = 0 ]
then
    xdotool windowactivate $id
    xdotool key 'ctrl+r' $id
fi

id=`xdotool search --title '[Site Title] - Moz'`
xdotool windowmap $id
if [ $? = 0 ]
then
    xdotool windowactivate $id
    xdotool key 'ctrl+r' $id
fi

id=`xdotool search --title '[Name of Virtual Machine]'`
xdotool windowmap $id
if [ $? = 0 ]
then
    xdotool windowactivate $id
    xdotool key 'ctrl+r' $id
    xdotool key 'alt+Tab' $id
    xdotool key 'ctrl+r' $id
fi

#xdotool windowmap $currentwindow
xdotool windowactivate $currentwindow

Сценарий для меня работает следующим образом:

  1. Сохраняет текущее окно
  2. Если Chrome открыт, поместите его в фокус и смоделируйте Ctrl-r для перезагрузки
  3. ... сделать то же самое для firefox ...
  4. Если виртуальная машина открыта, поместите ее в фокус, чтобы позволить Win XP перехватывать события клавиатуры и имитировать Ctrl-r, затем Alt-Tab для переключенияв другую версию IE (поскольку оба IE работают в одной и той же виртуальной машине через Utilu IE Collection) и последний Ctrl-r, чтобы обновить и эту версию

Вы должны иметь xdotool (sudo apt-getустановить xdotool).Снятие комментария со 2-й по последнюю строку гарантирует, что последнее открытое окно вернется вверх после того, как все обновления будут выполнены.

Другое решение, о котором я могу подумать, - это вызов AJAX, который проверяетпосмотрите, была ли переменная сеанса с именем do_refresh установлена ​​каждую секунду, и если это так, обновите браузер и затем напишите скрипт, который добавляет «| do_refresh» в конец всех файлов сеанса php, когда вы хотите перезагрузить, но это не делает »t поднять браузер на передний план (это то, что я хотел, потому что у меня есть 4 монитора, поэтому у меня есть код на первом, Chrome на втором, то есть 8 и 9 на третьем и Firefox на четвертом, и чтобы все они появлялись, когда явнести изменения в мой код действительно приятно, но если вы работаете с 1 или 2 мониторами, вы, возможно, не захотите, чтобы окна фокусировались).(примечание: 4 монитора не достаточно: X Если вы собираетесь получить много мониторов, получите 6.)

Фу, это был довольно пост.Просто хотел получить эту информацию о stackoverflow, чтобы каждый мог насладиться экстазом одновременной перезагрузки.

0 голосов
/ 10 ноября 2010

Я не думаю, что вы можете внешне "проинструктировать" браузер обновить определенную вкладку (или, по крайней мере, очень сложно поддерживать каждый браузер). Что вы можете сделать, это сделать автоматическое обновление страницы каждые X секунд, чтобы вы всегда показывали последнюю версию. Либо что-то вроде:

<script>
  setTimeout('window.location.reload(true);', XXXXX);
</script>

(где XXXXX в миллисекундах) или

<meta http-equiv="refresh" content="Y" />

(где Y - секунды).

...