La scorciatoia da tastiera per AppleScript funziona solo quando la finestra delle preferenze è aperta

2

Ho creato questo AppleScript per riprodurre / mettere in pausa i video di YouTube in esecuzione su 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

Funziona bene quando lo eseguo da Automator . Ho salvato il servizio e aggiunto una scorciatoia da tastiera + J per l'esecuzione del servizio. Ho anche aggiunto Automator alle impostazioni Accessibility (seguendo questa risposta SO ).

Ora ecco la parte strana: funziona quando ho la finestra System Preferences su focus. Se lo chiudo, o passa a qualsiasi altra finestra, il collegamento non funziona. Ho notato che funziona perché c'è una voce di menu in System Preferences che corrisponde alla scorciatoia e che viene attivata quando premo il collegamento.

Per favore aiuto. Grazie in anticipo.

    
posta th3an0maly 28.07.2017 - 13:15
fonte

2 risposte

1

Come ho accennato nel mio commento alla risposta di wch1zpink "Assicurarsi che le impostazioni del servizio siano corrette e la sequenza di tasti di scelta rapida non sia in uso da un'altra è il primo passo" e menzionate in seguito da jackjr300 nel suo commento. Modifica della scorciatoia da tastiera con una che non viene utilizzata da nient'altro nel sistema o in qualsiasi altra applicazione (ovvero se "Servizi riceve nessun input in nessuna applicazione " è impostato), funziona per me, sia che Preferenze di sistema sia aperto, quando si utilizza il codice , come è , nell'OP e una chiave non in conflitto sequenza.

Inoltre, non è necessario impostare alcuna applicazione in Preferenze di sistema > Sicurezza e amp; Privacy > Privacy > Accessibilità per questo particolare caso d'uso, sia in esecuzione da Automator o quando si utilizza una scorciatoia da tastiera non in conflitto in Preferenze di sistema > Tastiera > Scelte rapide > Servizi > (Name You Gave The Service) .

Per risolvere il tuo problema, devi utilizzare una scorciatoia da tastiera che non sia già stata assegnata altrove nel sistema e in qualsiasi applicazione.

Potresti dover usare una sequenza di tre o quattro tasti perché ci sono pochissime combinazioni di tasti che non sono già in uso.

In una nota a margine, return input non è affatto necessario nel codice in questo particolare caso d'uso.

    
risposta data 28.07.2017 - 19:21
fonte
0

Prova a sostituire l'intero codice nel tuo post esattamente con questo:

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)

    
risposta data 28.07.2017 - 16:50
fonte

Leggi altre domande sui tag