关闭chrome窗口后,Applescript命令遇到错误

时间:2018-02-24 10:36:41

标签: if-statement applescript repeat

所以我一直致力于一个与我的一些编码朋友混在一起的项目。我正在尝试创建一个AppleScript应用程序,告诉Chrome在运行时返回页面,我希望它一直运行。我不得不根据Chrome是否有活动窗口打开,我设法让它工作到目前为止,但是当我放入重复的“返回”命令时,它会出现一条错误消息,说明可以得到窗口1。

这是我正在使用的代码。如果有所作为,我正在使用High Sierra。

repeat
    if application "Google Chrome" is running then
        repeat
            tell application "Google Chrome"
                if exists (window 1 of application "Google Chrome") then
                    repeat while exists (window 1 of application "Google Chrome")
                        go back tab of window 1
                    end repeat
                end if
            end tell
        end repeat
    end if
end repeat

2 个答案:

答案 0 :(得分:0)

没有。这不是如何实现保持打开脚本。做无休止的重复循环而无法退出它们只会吞噬系统资源并使 Google Chrome 无法使用,直到脚本被迫退出。

此外,代码非常可怕:大量冗余语句和令人困惑的语法。

您最好通过创建所谓的 保持打开 应用程序脚本来实现您的目标,该脚本将使用idle处理程序来处理命令几秒钟左右。顾名思义,脚本将保持打开并执行命令,直到您告诉它退出。

首先声明一个属性,该属性确定调用idle处理程序的频率。这是在run处理程序的底部定义的,该处理程序在运行脚本时执行并调用idle处理程序。

    property idleTime : 20 --seconds


    on run

        idle

    end run


    on idle

        tell application "Google Chrome"
            if it is not running then return idleTime

            tell window 1 to if it exists then ¬
                tell its active tab
                    if its URL contains "disney" then ¬
                        tell me to quit

                    set its URL to "chrome://newtab/"
                end tell
        end tell

        return idleTime

    end idle

我略微修改了你吸引朋友的笑话,因为go back只会在你到达历史结束之前工作很多次,并且没有进一步的回复。相反,我告诉标签每20秒加载 New Tab 起始页面,我相信这对用户来说会非常混乱。

为了使其正常运行,您需要将脚本另存为应用程序,并选中将其标记为保持打开脚本的框。然后只需双击即可运行它。

有两种方法可以终止此脚本:①打开活动监视器并从正在运行的进程列表中终止其进程;或②访问 Chrome 中的Disney.com(或任何迪士尼网站),等待20秒。

答案 1 :(得分:0)

只需将此代码保存为逗留打开的应用程序。

$(
            '<input type="text" class="form-control quantity" '+
            'th:field="*{projectTasks[__'+index+'__].taskName}">'
        ).appendTo('#task');