3 votos

El atajo de teclado para AppleScript sólo funciona cuando la ventana de preferencias está abierta.

He creado este AppleScript para reproducir/pausar los vídeos 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 . He guardado el servicio y he añadido un atajo de teclado + J para ejecutar el servicio. También he añadido Automator a la Accessibility ajustes (siguiendo esta respuesta SO ).

Ahora aquí está la parte extraña: funciona cuando tengo el System Preferences ventana en foco. Si la cierro, o cambio a cualquier otra ventana, el acceso directo no funciona. Me di cuenta de que funciona porque hay un elemento de menú en System Preferences que corresponde al acceso directo, y que se activa cuando pulso el acceso directo.

Por favor, ayuda. Gracias de antemano.

0 votos

Utiliza otro acceso directo, porque es un acceso directo que ya existe en varias aplicaciones. ( Preview, Script Editor, Mail, TextEdit, iTunes, Safari, Finder, Terminal, Microsoft Word, TextWrangler, Automator etc.)

1voto

user3439894 Puntos 5883

Como mencioné en mi comentario a la respuesta de wch1zpink "Asegurarse de que la configuración del Servicio es correcta y que la secuencia de teclas de acceso directo no está siendo utilizada por otra es el primer paso" y mencionado después por jackjr300 en su comentario. Cambiar el atajo de teclado a uno que no sea utilizado por ninguna otra cosa en el sistema o cualquier aplicación (es decir, si 'Servicios recibe sin entrada en cualquier aplicación '), me funciona, independientemente de que Preferencias del sistema está abierto, cuando se utiliza el código , tal cual en el OP y una secuencia de teclas no conflictiva.

Tampoco es necesario tener ninguna aplicación configurada en Preferencias del sistema > Seguridad y privacidad > Privacidad > Accesibilidad para este caso de uso concreto, tanto si se ejecuta desde Autómata o cuando se utiliza un atajo de teclado no conflictivo en Preferencias del sistema > Teclado > Atajos > Servicios > (Nombre que dio al servicio) .

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

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


Como nota al margen, return input no es necesario en absoluto en el código en este caso concreto.

0voto

wch1zpink Puntos 11

Prueba a sustituir todo ese código de tu post exactamente por 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)

enter image description here

0 votos

Probé esto. Sigue igual. Funciona cuando Preferences ventana está abierta, no de otra manera.

1 votos

Prueba también a añadir Google Chrome a la configuración de accesibilidad

0 votos

Tengo curiosidad por saber por qué crees que envolver el código en un manipulador y llamando al manejador para ejecutar el execute comando va a producir resultados diferentes de los que produce cuando se llama a una execute directamente, sin utilizar un controlador? Utilizar un _manejador no va a hacer ni una pizca de diferencia en este caso de uso ya que ambas variaciones de codificación hacen exactamente lo mismo, las dos ejecutan en realidad lo siguiente comando : execute tab id # of window id # javascript "document.getElementsByClassName('ytp-play-button ytp-button')[0].click();"

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