2010-09-05 11 views

Respuesta

2

probar este ...

tell application "Firefox" 
    OpenURL "http://rubyquicktips.tumblr.com/" 
end tell 

o probar este ...

tell application "Firefox" to activate 
tell application "System Events" to keystroke "n" using command down 
tell application "Firefox" 
    OpenURL "http://rubyquicktips.tumblr.com/" 
end tell 
+0

OpenURL no funciona con Leopard ... ¡pero su segundo consejo es brillante! – tabaluga

+0

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

6

esto funciona, pero abre su página de bienvenida en la primera pestaña ...

tell application "Firefox" to activate 
tell application "System Events" to keystroke "n" using command down 
delay 3 
tell application "Firefox" 
    open location "http://rubyquicktips.tumblr.com/" 
end tell 
+0

Esto funciona para mí en OS X 10.8 –

0

No estoy completamente familiarizado con AppleScript, pero estaba buscando abrir una nueva ventana predeterminada. He aquí un método que funciona:

tell application "System Events" 
    tell process "Firefox" 
     click menu item "New Window" of menu "File" of menu bar 1 
    end tell 
end tell 

Opcionalmente, para centrarse en la nueva ventana, añadir estas líneas después:

tell application "Firefox" 
    activate 
end tell 

Esto abrirá una nueva ventana por defecto. Puede haber una mejor manera.

1

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.
+0

@EdRandall: Sí, cualquier aplicación que ejecute el código de guión de la GUI debe estar autorizada; Agregué una nota explícita al Editor de scripts. Tiempos de espera de Re: buena idea, pero la respuesta ya indica que "el código podría mejorarse implementando tiempos de espera para los bucles de espera"; como comentario aparte: no es la falta de autorización lo que puede hacer que estos ciclos específicos se estanquen (el primero no requiere autorización, y el segundo no se alcanzaría si faltara la autorización). – mklement0

Cuestiones relacionadas