通过applescript打开一个新的javascript窗口,不存在先前的窗口

时间:2012-01-26 17:20:56

标签: javascript macos applescript

尝试在弹出式窗口中打开URL。下面的脚本工作正常,但是当用户还没有打开任何窗口时,它不起作用。我想我的问题是,我可以在没有活动窗口的情况下执行Javascript吗?

tell application "Safari"
activate
set theURL to "http://www.google.com"
do JavaScript ("window.open('" & theURL & "','_blank','titlebar=0');") in document 1
end tell

我可以让它在Javascript之前打开一个新窗口,但它是理想的,只需弹出窗口就可以存在而不必这样做。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

对我来说(运行Mac OS X 10.6.8和Safari 5.1.2),解决方案的关键是reopen命令。无论Safari是否正在运行,这将导致显示主页的新Safari窗口。你需要一个页面(一个“文档”)来运行你的JavaScript。

由于我们打开该窗口只是为了发出打开弹出窗口的JavaScript命令,我们可以通过在变量中记住它并稍后关闭它来摆脱它。当然,这是可选的,只有在脚本执行时没有打开的Safari窗口才有意义。您可以通过count every window轻松测试。

tell application "Safari"
    reopen -- unlike activate, this opens a window
    set theURL to "http://www.google.com"
    set currentTab to tab 1 of window 1
    do JavaScript ("window.open('" & theURL & "','_blank','titlebar=0');") in document 1
    close currentTab
end tell