0 votos

Applescript- Hice un código de desplazamiento automático y necesito saber cómo detenerlo

Edición: Este es el código más reciente que tengo ahora... ¿Cómo puedo conseguir que se detenga (cambie el valor de x) cuando ejecute un script separado?

    set x to 0

tell application "Google Chrome"
    set urlName to URL of active tab of front window
end tell

if urlName is "https://www.facebook.com" then

    tell application "System Events"
        tell application process "Google Chrome"
            set frontmost to true
            repeat while x = 0
                key code 38
                delay 1
            end repeat
        end tell
    end tell

else

    tell application "System Events"
        tell application process "Google Chrome"
            set frontmost to true
            repeat while x = 0
                key code 49
                delay 1
            end repeat
        end tell
    end tell

end if

1voto

William T Froggard Puntos 2862

He rehecho el script, de nuevo. Ese código de antes era ridículo tbh. Me he adelantado un poco... Vamos a intentar esto de nuevo... Guarda esto como una aplicación "stay open" de nuevo, con el nombre de cualquier cosa. Sólo tendrás que salir de ella cuando quieras dejar de desplazarte, y volver a iniciarla cuando quieras continuar. Te aconsejo que la pongas en tu Dock para acceder fácilmente:

global script_PID
on run
    tell application "Google Chrome" to activate
    delay 1
    tell me to activate
end run

on idle
    tell application "Google Chrome"
        tell active tab of front window
            set urlName to URL
            if (execute javascript "if (window.pageYOffset + window.innerHeight >= document.body.clientHeight){true;}else{false;}") is false then
                execute javascript "window.scrollBy(0,window.innerHeight - 40);"
            else
                tell me to quit
            end if
        end tell
    end tell
    return 1
end idle

Dime si tienes algún problema con esto.

1voto

Podemos utilizar defaults para almacenar y leer valores (tipo man defaults en un Terminal.app para leer más al respecto).

Ejecutar Script 1

script 1

global x

property defaultIdentifier : "com.chrome.scroll"

-- Since we start fresh lets reset x
resetX()

tell application "Google Chrome"
    activate
    set urlName to URL of active tab of front window
end tell

if urlName is "https://www.facebook.com" then

    tell application "System Events"
        tell application process "Google Chrome"
            repeat while x = 0
                set frontmost to true
                key code 38
                delay 1
                my getX()
            end repeat
        end tell
    end tell

else

    tell application "System Events"
        tell application process "Google Chrome"
            repeat while x = 0
                set frontmost to true
                key code 49
                delay 1
                my getX()
            end repeat
        end tell
    end tell

end if

on getX()
    # Reading a value that does not exists will generate an error.
    # Since this script creates (at launch) the value with "resetX()", this can only happen when someone
    # deletes the defaults value while the script is running. (say, with "defaults delete 'com.chrome.scroll'").
    try
        set y to do shell script "defaults read" & space & quoted form of defaultIdentifier & space & "x"

        # Because "x" is an integer but "do shell script" returns text, we want to convert "y" into an integer.
        # This will throw an error if the value isn't an integer.
        set y to y as integer # if this fails, "X" is left untouched since it goes straight into the "on error" part.
        set x to y

    on error
        # To react to it, do something here. 
        # beep
    end try

end getX

# When writing into the defaults, we can give a hint that "x" is an integer (using "-int").
# It would also work without it.
on resetX()
    set x to 0
    do shell script "defaults write" & space & quoted form of defaultIdentifier & space & "x" & space & "-int 0"
end resetX

y detenerlo con Script 2 :

script 2

property defaultIdentifier : "com.chrome.scroll"
do shell script "defaults write" & space & quoted form of defaultIdentifier & space & "x" & space & "-int 1"

También se puede ejecutar directamente en Terminal.app o utilizarlo en un shell script así:

defaults write com.chrome.scroll x 1    # or:
defaults write com.chrome.scroll x -int 1

Notas

Puse el set frontmost to true en el repeat ya que el usuario podría activar otra app mientras el script se está ejecutando, lo que estropearía todo.


Realmente no necesitamos usar un property para com.chrome.scroll pero como el código necesita esos datos en dos lugares y es posible que quieras cambiarlos, lo hice así.

Si quieres cambiarlo, utiliza algo único, sin caracteres especiales ni espacios. iTunes , por ejemplo, utiliza com.apple.iTunes y Finder utiliza com.apple.Finder . Así que normalmente un application está utilizando su bundle identifier como domain para el defaults .

0voto

mistero Puntos 899

Tiene que determinar cuántas veces quiere key code .

set i to 3 -- This is your iterator Stop after 3
repeat until i = 0
  -- do stuff 
  set i to i - 1 -- this will subtract from original first repeat i becomes 2 and so on.
end repeat

Es posible que quiera todo esto en un tell para Safari.

Espero que esto ayude.

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