El método abreviado de teclado para AppleScript funciona solo cuando la ventana de preferencias está abierta

2

Creé este AppleScript para reproducir / pausar videos de Youtube que se ejecutan en Chrome:

on run {input, parameters}

    tell application "Google Chrome" to (tabs of window 1 whose URL contains "youtube")
    set youtubeTabs to item 1 of the result
    tell application "Google Chrome"
        execute youtubeTabs javascript "document.getElementsByClassName('ytp-play-button ytp-button')[0].click();"
    end tell

    return input
end run

Funciona bien cuando lo ejecuto desde Automator . Guardé el servicio y agregué un atajo de teclado + J para ejecutar el servicio. También agregué Automator a la configuración de Accessibility (después de esta respuesta SO ).

Ahora aquí está la parte extraña: funciona cuando tengo la ventana System Preferences enfocada. Si lo cierro, o cambio a cualquier otra ventana, el acceso directo no funcionará. Noté que está funcionando porque hay un elemento de menú en la ventana System Preferences que corresponde al acceso directo, y se activa cuando presiono el acceso directo.

Por favor ayuda. Gracias de antemano.

    
pregunta th3an0maly 28.07.2017 - 13:15

2 respuestas

1

Como mencioné en mi comentario a la respuesta de wch1zpink "Asegurarse de que la configuración del Servicio sea correcta y que la secuencia de teclas de método abreviado no esté siendo utilizada por otro es el primer paso" y luego lo mencionó jackjr300 en su comentario. Cambiar el método abreviado del teclado a uno que no sea usado por ninguna otra cosa en el sistema o en cualquier aplicación (es decir, si 'Servicios recibe sin entrada en cualquier aplicación ' está configurado), funciona para mí, ya sea que Preferencias del sistema esté o no abierta, al utilizar el código , tal como está , en el OP y una clave no conflictiva secuencia.

Tampoco es necesario tener ninguna aplicación configurada en Preferencias del sistema > Seguridad & Privacidad > Privacidad > Accesibilidad para este caso de uso en particular, ya sea ejecutándose desde Automator o al usar un método abreviado de teclado no conflictivo en Preferencias del sistema > Teclado > Accesos directos > Servicios > (Nombre que dio el servicio) .

Para resolver su problema, debe usar un método abreviado de teclado que no esté asignado en ninguna otra parte del sistema ni en ninguna otra aplicación.

Es posible que tengas que usar una secuencia de tres o cuatro teclas, ya que hay muy pocas combinaciones de teclas, si es que hay alguna, que no están en uso.

En una nota al margen, return input no es necesario en absoluto en el código en este caso de uso particular.

    
respondido por el user3439894 28.07.2017 - 19:21
0

Intenta sustituir ese código completo en tu publicación con exactamente esto:

to clickClassName(theClassName, elementnum)
    tell application "Google Chrome" to (tabs of window 1 whose URL contains "youtube")
    set youtubeTabs to item 1 of the result
    tell application "Google Chrome"
        execute youtubeTabs javascript "document.getElementsByClassName('" & theClassName & "')[" & elementnum & "].click();"
    end tell
end clickClassName    

clickClassName("ytp-play-button ytp-button", 0)

    
respondido por el wch1zpink 28.07.2017 - 16:50

Lea otras preguntas en las etiquetas