Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 704839
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 14, 20262026-05-14T03:59:11+00:00 2026-05-14T03:59:11+00:00

I have made a very simple AppleScript to close tabs in Safari. The problem

  • 0

I have made a very simple AppleScript to close tabs in Safari. The problem is, it works, but not completely. Only a couple of tabs are closed. Here’s the code:

tell application "Safari"
    repeat with aWindow in windows
        repeat with aTab in tabs of aWindow
            if [some condition is encountered] then
                aTab close
            end if
        end repeat
    end repeat
end tell

I’ve also tried this script:

tell application "Safari"
    repeat with i from 0 to the number of items in windows
        set aWindow to item i of windows
        repeat with j from 0 to the number of tabs in aWindow
            set aTab to item j of tabs of aWindow
            if [some condition is encountered] then
                aTab close
            end if
        end repeat
    end repeat
end tell

… but it does not work either (same behavior).

I tried that on my system (MacBook Pro jan 2008), as well as on a Mac Pro G5 under Tiger and the script fails on both, albeit with a much less descriptive error on Tiger.

Running the script a few times closes a few tab each time until none is left, but always fails with the same error after closing a few tabs. Under Leopard I get an out of bounds error. Since I am using fast enumeration (not using “repeat from 0 to number of items in windows”) I don’t see how I can get an out of bounds error with this…

My goal is to use the Cocoa Scripting Bridge to close tabs in Safari from my Objective-C Cocoa application but the Scripting Bridge fails in the same manner. The non-deletable tabs show as NULL in the Xcode debugger, while the other tabs are valid objects from which I can get values back (such as their title). In fact I tried with the Scripting Bridge first then told myself why not try this directly in AppleScript and I was surprised to see the same results.

I must have a glaring omission or something in there… (seems like a bug in Safari AppleScript support to me… :S) I’ve used repeat loops and Obj-C 2.0 fast enumeration to iterate through collections before with zero problems, so I really don’t see what’s wrong here.

Anyone can help?

Thanks in advance!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-14T03:59:12+00:00Added an answer on May 14, 2026 at 3:59 am

    this works for me nice and simple

      tell application "Safari"
        close every window
      end tell
    

    ok you have to go from the count to 1 otherwise the count will be off when you close the window

      tell application "Safari"
        repeat with i from (count of windows) to 1 by -1
            repeat with j from (count of tabs of window i) to 1 by -1
                set thistab to tab j of window i
                set foo to name of thistab
                if foo is not equal to "bar" then close thistab
            end repeat
        end repeat
      end tell
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.