如何使用 URL 参数打开新的 Firefox 窗口

如何使用 URL 参数打开新的 Firefox 窗口

我正在尝试升级现有的答案

如何使用终端打开新的 Firefox 窗口

接受 URL 作为参数并打开一个新的 Firefox 窗口。

我可以用

open -a Firefox 'http://localhost:3000'

但它是在选项卡中打开的,而不是像希望的那样在新窗口中打开。

其中一个变化是

open -n -a Firefox 'http://localhost:3000'

这给了我标准错误

关闭 Firefox,已打开一个 Firefox 副本。一次只能打开一个 Firefox 副本

但是它会在我的默认浏览器 Safari 中打开该 URL。


我尝试了基于 open 手册页和 Mozilla 网站的各种选项,以便使用其产品打开 URL,但他们说这些信息已被弃用,可能不起作用。它对我来说不起作用,例如

/Applications/Firefox.app/Contents/MacOS/firefox -new-window "http://localhost:3000"
/Applications/Firefox.app/Contents/MacOS/firefox -remote "openURL(http://localhost:3000, new-window)"

两者都因上述常见错误而失败。

我尝试修改了之前链接中的脚本。我将其更新为以下内容。

# A function to be able to open up a new Firefox window if firefox is already
# running.
function firefox-window() {
/usr/bin/env osascript <<-EOF
on run argv
  tell application "System Events"
    if (name of processes) contains "Firefox" then
        tell application "Firefox" to activate
        keystroke "n" using command down
    else
        tell application "Firefox" to activate
    end if

    return "I am trying to open " & item 1 of argv & " in a new Firefox window."
  (*
    if & item 1 of argv &
      return "I am the if you seek"
      tell application "Firefox" OpenURL & item 1 of argv &
    end if
  *)

  end tell
end run
EOF
}

我收到错误:

执行错误:无法将 {} 中的第 1 项转换为 Unicode 文本类型。(-1700)

我被困在那里。因此,我无法将 URL 作为参数放入 applescript 中。

好吧,我收到了许多其他错误,但是尽管出现了 UNICODE 错误之前的错误,原始脚本仍然运行。

~$ firefox-window 'http://localhost:3000'
2012-06-10 16:13:30.258 osascript[789:60f] Error loading /Library/ScriptingAdditions/Adobe Unit
 Types.osax/Contents/MacOS/Adobe Unit Types:  dlopen(/Library/ScriptingAdditions/Adobe Unit
 Types.osax/Contents/MacOS/Adobe Unit Types, 262): no suitable image found.  Did find:
    /Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types: no
     matching architecture in universal wrapper
osascript: OpenScripting.framework - scripting addition "/Library/ScriptingAdditions/Adobe Unit
 Types.osax" declares no loadable handlers.
294:300: execution error: Can’t make item 1 of {} into type Unicode text. (-1700)

我原本希望这可以很简单,但结果却让我头疼不已。我很奇怪为什么它不能用简单的 open 命令来工作,所以我只能用 shell 脚本来做。

如有任何帮助,让 Firefox 在向其传递 URL 时打开一个新窗口,我们将不胜感激。

答案1

笔记:以下内容适用于 OS X 10.7,但不适用于 10.8 – 请参阅这个问题

打开AppleScript 编辑器.app并粘贴以下内容:

on run argv
    tell application "System Events"
        if (name of processes) contains "Firefox" then
            tell application "Firefox" to activate
            keystroke "n" using command down
            delay 0.1 -- UI scripting delay
        else
            tell application "Firefox" to activate
            delay 0.3 -- more delay
        end if
        keystroke "l" using command down
        keystroke item 1 of argv
        keystroke return
    end tell
end run

在这里,我们要么使用 Cmd-N 打开一个新窗口,要么直接激活 Firefox。我添加了一个自定义延迟 — 这是必要的,因为 UI 操作具有固有的延迟,即使窗口尚未准备好,脚本也会继续输入。

最后,我们来看看keystroke第一个参数,即item 1 of argv

将此文件保存在 下firefox-window.scpt,例如在您的主文件夹中。然后修改 中的 shell 函数~/.bash_profile

function firefox-window() {
  osascript ~/firefox-window.scpt "$1"
}

这会将第一个命令行参数传递$1给 AppleScript,以便作为 来访问item 1 of argv

保存.bash_profile并不要忘记重新启动终端或输入source ~/.bash_profile。然后,只需使用以下命令运行命令:

firefox-window apple.com
firefox-window google.com

…等等。

相关内容