0 votos

Aplicación AppleScript como página web de Safari

Actualmente utilizo una aplicación AppleScript que lanza un sitio web (phpMyAdmin) en Safari. Lo mantengo en mi dock para facilitar el acceso.

Lo que busco

  • Al hacer clic en el ASA (AppleScript Application) se abre a la página de safari
  • Cuando me muevo a una ventana diferente y hago clic en el ASA de nuevo, traerá la ventana de safari al frente en lugar de volver a abrirla en una nueva ventana/pestaña
  • Si salgo del ASA la página de safari se cierra
  • Si saco la pestaña donde está el sitio web, el ASA saldrá

Si alguien tiene alguna idea de cómo hacerlo, sería genial.

0 votos

Teniendo en cuenta los cuatro puntos, no creo que se pueda hacer razonablemente con un simple AppleScript normal básico, probablemente tendrías que entrar en AppleScriptObjC. IMO Sería mucho más fácil centrarse en sólo los dos primeros puntos. Yo lo escribiría de manera que cuando la aplicación se ejecute, compruebe si la pestaña de destino existe y si no la abre, si no la trae al frente y sale. Realmente no veo la necesidad de los dos últimos puntos, simplemente cierra la página cuando hayas terminado con ella y la aplicación ya está cerrada de todos modos.

0 votos

@user3439894 Gracias por la información. Estoy de acuerdo en que lo haría de la manera sugerida. Las dos últimas viñetas son por si alguien utiliza mantener abierto el gestor de ejecución.

0 votos

IMO No hay necesidad de mantenerlo vivo después del manejador de ejecución, y si lo mantienes abierto entonces el código tiene que hacer un bucle y eso no es práctico para lograr una solución de trabajo razonable centrándose sólo en los dos primeros puntos.

1voto

qarma Puntos 71

Como han señalado otros usuarios, probablemente no merezca la pena mantener el tercer y cuarto punto, ya que dificulta la aplicación de los dos primeros:

use S : application "Safari"
property PHPMyAdminURL : "http://xxxxx/ppmya"

on run
    if S is not running then return openPHPMyAdmin()

    set _T to a reference to (every tab of every window of S whose ¬
        name contains "PHPMyAdmin" and ¬
        URL contains "/ppmya")

    if (count _T) > 0 then return viewPHPMyAdmin(_T)

    openPHPMyAdmin()
end run

to openPHPMyAdmin()
    tell S
        if (count windows) = 0 then
            make new document with properties ¬
                {URL:PHPMyAdminURL}
        else
            make new tab at end of tabs of S's window 1 ¬
                with properties ¬
                {URL:PHPMyAdminURL}
            set current tab of S's window 1 to the result
        end if

        activate
    end tell
end openPHPMyAdmin

to viewPHPMyAdmin(T)
    set [T] to T
    set W to the first window of S whose tabs contains T

    set current tab of W to T
    activate S
    set the index of W to 1
end viewPHPMyAdmin

Después de algunos comentarios iniciales de @user3439894, he eliminado el on quit handler ya que al intentar utilizar el script como una aplicación de permanencia impide que el punto 2 se implemente efectivamente.

1 votos

No he probado su código, sin embargo, a primera vista esto está escrito para permanecer abierto después del controlador de ejecución con el fin de satisfacer el tercer punto, ¿verdad? Bueno, no veo cómo esto va a manejar el segundo punto después de la aplicación se ejecuta por primera vez y se mantiene abierta. Al hacer clic en el mosaico del Dock de la aplicación AppleScript abierta no se va a ejecutar ningún código adicional para establecer el foco en la pestaña de destino de nuevo.

0 votos

@user3439894 Sí, tienes razón. Debería haber leído más finamente tus comentarios iniciales contra la pregunta del OP, ya que esa es exactamente la advertencia que hiciste desde el principio.

0 votos

Buen script. Voy a ver si puedo encontrar una manera de arreglar el problema con el controlador de salida. Gracias.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X