通过terminal命令使用浏览器自动重新加载html文件

时间:2013-06-15 00:48:27

标签: html macos bash unix terminal

我正在尝试做一些小的html web内容,并且发现每当我保存文件时能够看到通过浏览器查看的html文件的实时更新非常有用。我知道可能有IDE为你做这个,如果你推荐任何,请做,但我想制作一个脚本,只需在浏览器中打开文件,同时关闭该文件的版本已打开,以便我可以继续在vim中完成所有编程。

我知道我可以在Mac OSX中使用以下内容,将文件打开到我当前浏览器的新标签中:

open foo.html

但是,如果我在定时循环中发生这种情况,或者每次我在vim中编写(:w),我的浏览器都会填满新标签。有没有办法在打开新标签时关闭旧标签?或者有没有更好的方法,我没有考虑过?如果我可以继续在终端使用vim,那将是非常优选的。

提前致谢。

4 个答案:

答案 0 :(得分:12)

您可以使用AppleScript重新加载标签。请参阅Benjie对this question的回答 使用osascript从shell脚本调用AppleScript。你会得到这样的东西:

osascript -e 'tell application "Google Chrome" to tell the active tab of its first window to reload'

或者,您可以使用类似下面的内容关闭所有以前的标签:

tell application "Google Chrome"
    set windowList to every tab of every window whose URL starts with "http://stackoverflow.com"
    repeat with tabList in windowList
        repeat with thisTab in tabList
            close thisTab
        end repeat
    end repeat
end tell

答案 1 :(得分:3)

如果已存在foo.html标签,则open foo.html应将该标签重点放在Safari中。对于Chrome,您可以使用以下内容:

set u to "http://t.co/"
tell application "Google Chrome"
    repeat with w in windows
        set i to 0
        repeat with t in tabs of w
            set i to i + 1
            if URL of t is u then
                set active tab index of w to i
                set index of w to 1
                tell t to reload
                activate
                return
            end if
        end repeat
    end repeat
    open location u
    activate
end tell

我刚刚在TextMate的open "$TM_FILEPATH" -a Safari范围内将⌘R分配给text.html。我还在切换到另一个应用程序时启用了保存文档,因此它基本上执行了编辑 - 保存 - 切换应用程序 - 刷新周期的最后三个步骤。

其他选择:

答案 2 :(得分:0)

对于您的应用程序可能有点过分,但我对所有HTML项目都使用make文件。我只为自己制作静态网站,但是我使用Less和Jade(有时在本地编译为静态页面的php,愚蠢的是你不能动态地包含在jade中)并且make与vim很好地集成。您可以制定编译,重新加载,推送到服务器等规则。我获得浏览器实时更新的方法是启动一个Node或python服务器来为html提供一个额外的javascript“观察者”,它有很多种类,具体取决于你使用的其他技术。

答案 3 :(得分:0)

您可以使用可以从套接字接收命令的浏览器,例如uzbl,luakit或dwb。

您可以使用扩展程序(插件,插件,无论您最喜欢的浏览器调用它)添加此功能(收听套接字,甚至是文件)。

您可以将一些javascript插入到您正在编辑的页面中,这样可以根据您可以从CLI控制的某些信号重新加载。

您可以编写一个会终止浏览器并重新打开它的脚本。某些浏览器会尝试加载页面的缓存版本。对于这些,您最好使用查询字符串并每次创建一个唯一的URI(例如open "foo.html?$(date +%s)")。

可能性无穷无尽!