0

我正在尝试使用 Applescript 在 Safari 中捕获鼠标单击事件。我的 Applescript 做了它需要做的事情,但是如果用户在 Safari 中单击文档,我想终止。我想在 Applescript 中设置一个 On_Click 事件,如果用户单击 Safari 文档,该事件将触发。

4

2 回答 2

0

当焦点窗口变为普通浏览器窗口时,您可能会退出脚本,例如测试最前面的窗口是否有全屏按钮:

tell application "System Events" to tell process "Safari"
    repeat until exists value of attribute "AXFullScreenButton" of window 1
        --do something
        delay 1
    end repeat
end tell

或者,如果脚本应该在 Safari 成为最前面的应用程序时停止:

repeat until frontmost of application "Safari"
    --do something
    delay 1
end repeat
于 2013-09-24T05:37:05.147 回答
0

我不知道如何用applescript“捕获”鼠标事件。为此,您必须使用objective-c 和可可API。

但是,您可能会以另一种方式进行操作。这是一个简单的例子。将其保存为保持打开的 applescript 应用程序。当您运行它时,Safari 窗口将滚动。要暂停滚动,只需单击 applescript 的停靠图标。如果再次单击停靠图标,则滚动将再次开始,反之亦然。您会注意到,每次单击停靠图标时,都会执行“重新打开”处理程序,该处理程序会在 true 和 false 之间切换 shouldScroll 变量。

无论如何,我希望这能给你一个想法,让你自己的脚本工作。请记住,您可以通过右键单击其停靠图标并选择退出来退出保持打开状态的 AppleScript。祝你好运。

property shouldScroll : missing value
property theCounter : missing value
property counterMaxValue : missing value

on run
    tell application "Safari" to activate
    set shouldScroll to true
    set theCounter to 0
    set counterMaxValue to 2000
end run

on reopen
    tell application "Safari" to activate
    set shouldScroll to not shouldScroll
end reopen

on idle
    if shouldScroll then
        if theCounter is greater than counterMaxValue then set theCounter to 0
        tell application "Safari" to tell document 1
            do JavaScript "window.scroll (0," & (theCounter as text) & ")"
        end tell
        set theCounter to theCounter + 20
    end if
    return 0.1
end idle
于 2013-09-24T19:19:36.030 回答