Nota:
A partir de al menos Firefox v50, se puede hacer de Firefox por defecto a la apertura de las direcciones URL en una nueva ventana, desmarcando Open new windows in a new tab instead
en la ficha General
de las preferencias de Firefox.
Tenga en cuenta, sin embargo, que esta es una configuración persistente que afecta a todas las URL abiertas desde fuera de Firefox.
La solución a continuación aún puede ser de interés si no desea confiar en el estado de esa configuración.
(Desafortunadamente, debido al soporte AppleScript limitado de Firefox, no existe una solución igualmente robusta para abrir siempre en una pestaña , independientemente del estado de la configuración).
Aquí es una solución más robusta que:
no se basa en un retardo fijo y
es independiente del idioma (como es el enfoque de envío de pulsaciones de teclas); es decir, que también trabaja con nombres localizados para los menús y comandos (por ejemplo, "Datei" de "Archivo", ...)
Sin embargo, debido scripting interfaz gráfica de usuario se emplea para hacer clic mediante programación en un elemento de menú, necesita authorize the calling applicationfor assistive access first (una acción única que requiere privilegios administrativos); por ejemplo, si su script se ejecuta desde un terminal, debe autorizar Terminal.app
, pero incluso Script Editor.app
debe estar autorizado si desea ejecutar el script mientras lo desarrolla.
tell application "Firefox"
# Make Firefox frontmost.
activate
# Wait until it is truly frontmost.
repeat while not frontmost
delay 0.1
end repeat
# Open a new window using GUI scripting (requires authorization for assistive access),
tell application "System Events" to tell application process "Firefox"
set windowCountBefore to (count of windows)
# Click on File > New to open a new window, but locate it
# by keyboard shortcut rather than by name, so as to also work
# with localized menu names.
tell menu 1 of menu bar item 3 of menu bar 1
click (first menu item whose value of attribute "AXMenuItemCmdChar" is "N" and value of attribute "AXMenuItemCmdModifiers" is 0)
end tell
# Wait for the new window to appear.
repeat while (count of windows) = windowCountBefore
delay 0.2
end repeat
end tell
# Finally, open the URL.
open location "http://example.org/"
end tell
Nota:
En circunstancias normales, si Firefox es sensible, esto debería funcionar de forma fiable. Sin embargo, el código podría mejorarse implementando tiempos de espera para los bucles de espera.
Firefox no es el más rápido al abrir la nueva ventana, por lo que Firefox se activará primero, y la nueva ventana solo aparecerá aproximadamente un segundo más tarde.
La nueva ventana invariablemente tendrá una primera pestaña vacía, y la URL se abrirá en la pestaña 2nd.
Una nota al margen de la re-apariencia inusual tell application "System Events" to tell application process "Firefox"
construcción:
- Los principales objetivos del bloque Firefox aplicación (
tell application "Firefox"
).
- Sin embargo, secuencias de comandos interfaz gráfica de usuario se debe hacer en el contexto de la aplicación
System Events
(tell application "System Events"
), y, dentro de ese contexto, es el proceso de Firefox que debe ser dirigido (tell application process "FireFox"
). Si bien puede escribir dos bloques anidadostell
, se combinan en un solo bloque aquí por conveniencia y brevedad.
OpenURL no funciona con Leopard ... ¡pero su segundo consejo es brillante! – tabaluga
Por ahora, estamos en Mac OS 10.12.5. Esta solución ya no funcionará. Si alguien aún desea hacerlo, debe reemplazar el OpenURL por la ubicación abierta, como blubb es la respuesta en answer. – JoeMecPak