【问题标题】:How can I reload all my browsers at once on linux?如何在 linux 上一次重新加载所有浏览器?
【发布时间】:2010-11-09 22:02:19
【问题描述】:
我是一名网页设计师,当然我必须使用所有主流浏览器(没有 IE 6,因为它太让人头疼了,我需要 png 透明度而没有任何变通办法)。我一直在寻找一种同时运行和重新加载 Firefox、Webkit 浏览器 (Chrome) 和 IE 7 和 8 的方法。
(我已经得到了我需要的答案,我将在下面发布以供其他人参考,但我确信有更好的方法。)
【问题讨论】:
标签:
internet-explorer
firefox
browser
reload
【解决方案1】:
我就是这样解决的:
浏览器打开:
- 谷歌浏览器
- 火狐
- VirtualBox w/ Win XP 运行:
在我的网站代码中,我有一个静态标题,以便我可以通过其名称引用每个浏览器窗口。例如,标题“这是我所有页面的标题”会导致 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
脚本对我来说是这样的:
- 保存当前窗口
- 如果 chrome 已打开,请将其聚焦并模拟 Ctrl-r 以重新加载
- ...对 Firefox 执行相同操作...
- 如果 VM 已打开,请将其置于焦点以允许 Win XP 捕捉键盘事件并模拟 Ctrl-r,然后是 Alt-Tab 以切换到另一个 IE 版本(因为两个 IE 在同一个 VM 中运行Utilu IE Collection)和最后一个 Ctrl-r 来刷新那个
你必须有 xdotool (sudo apt-get install xdotool)。
取消对倒数第 2 行的注释将确保您打开的最后一个窗口在完成所有刷新后将回到顶部。
我能想到的另一个解决方案是使用 AJAX 调用检查是否每秒设置了一个名为 do_refresh 的会话变量,如果设置了,请刷新浏览器,然后编写一个脚本,将“|do_refresh”附加到当您想重新加载时,所有 php 会话文件的结尾,但这不会将浏览器提升到前台(这是我想要的,因为我有 4 个监视器,所以第一个有代码,第二个有 chrome,即 8 & 9 在第三个和 firefox 在第四个,当我对我的代码进行更改时让它们都出现真的很好,但如果你使用 1 或 2 个监视器运行,你可能实际上并不希望窗口成为焦点)。 (旁注:4 台显示器甚至不够 :X 如果你要买很多显示器,那就买 6 台吧。)
唷,这篇文章写得真好。只是想在 stackoverflow 上获取此信息,以便每个人都可以同时享受重新加载狂喜。
【解决方案2】:
我认为您不能从外部“指示”浏览器刷新某个选项卡(或者至少支持每个浏览器会非常复杂)。您可以做的是让页面每 X 秒自动刷新一次,这样您将始终显示最新版本。要么是这样的:
<script>
setTimeout('window.location.reload(true);', XXXXX);
</script>
(其中 XXXXX 为毫秒),或
<meta http-equiv="refresh" content="Y" />
(其中 Y 是秒)。