Как открыть ссылку в определенном окне Safari в macOS?

У меня есть несколько окон Safari для организации вкладок. Обычно у меня есть несколько вкладок в каждом окне.

Когда я нажимаю на ссылку из приложения, отличного от Safari, ссылка открывается на новой вкладке в Safari, поскольку Safari — мой браузер по умолчанию.

Проблема в том, что он часто открывается в окне Safari, которое в настоящее время свернуто или которое я в настоящее время не использую. Поэтому он не открывает ссылку в моем основном, активном, текущем окне (в основном, в том, которое я использовал последним). Вместо этого он выбирает свое собственное «окно по умолчанию» для открытия ссылок, которое может быть окном, которое я даже не использую.

Однако я хотел бы, чтобы эти ссылки всегда открывались в окне, которое я использовал последним, а не в окне, которое я не использую. Можно ли сделать так, чтобы ссылки всегда открывались в последнем активном окне, которое вы использовали, или, по крайней мере, установить окно «по умолчанию», которое будет открывать новые ссылки?

В настоящее время я использую macOS Sierra 10.12.1 с версией Safari по умолчанию, которая поставляется с ней.

Вам нужно будет предоставить больше информации, чтобы сообщество могло вам помочь. Поскольку ваш вопрос в настоящее время остается в силе, мы понятия не имеем, говорите ли вы о Safari на устройстве iOS или на Mac? Кроме того, какую ОС вы используете? То есть, если это macOS, это macOS Sierra, El Capitan и т. д.? Если это iPhone, вы используете iOS 10, iOS 9 или что-то еще? В любом случае, укажите точную версию. И, если это Mac, также предоставьте точную версию Safari, которую вы используете.
Вы абсолютно правы, я забыл обо всем этом. Я обновлю вопрос!
Вы сказали « это то, когда все остальные окна закрыты и находятся на переднем плане », вы хотели сказать, что свернуто , а не закрыто ?
@user3439894 user3439894 тьфу, еще раз обновил вопрос, чтобы было понятнее.
Я полагаю, что ответ будет отрицательным, невозможно установить окно «по умолчанию», в котором будут открываться новые ссылки при инициализации другим приложением.
@ user3439894, к сожалению, похоже, это так. Однако, возможно, кто-то может знать о настройке, которая может позволить что-то сделать с этим :)
У меня есть несколько вопросов. (1) Является ли Safari вашим предпочтительным браузером или вы придерживаетесь гибкости? (2) Предполагая, что Safari является вашим предпочтительным браузером, должен ли он также быть вашим браузером по умолчанию? (3) Если бы был способ заставить Safari всегда открывать внешнюю ссылку (например, ссылку из другого приложения) в новом окне, было бы этого достаточно? (4) Должно ли это быть бесплатное решение, или вы готовы заплатить за него (при условии, что стоимость будет разумной)?
(1) Да, лично я предпочитаю Safari (хотя другие люди могут не согласиться с этим, я не знаю, было ли это целью награды; действительно, я не знаю, почему была назначена награда!) (2) Да , это предпочтительно должен быть браузер по умолчанию, потому что я хочу, чтобы ссылки открывали его и мой основной браузер. (3) Да, вроде нормально. Основной источник раздражения — это открытие ссылки на неиспользуемой вкладке. (4) Да, заплатить разумную сумму тоже не помешает :)
Думаю, у меня есть решение. Не могли бы вы показать нам — шаг за шагом — как воспроизвести текущее поведение Safari? Я (1) открыл три окна Safari, (2) свернул два из них, (3) открыл заметку в Notes.app с интерактивным URL-адресом. (4) Safari запустил URL-адрес в открытом окне Safari. ## Все ли приложения находились в одном пространстве?
@oa- Я думаю, что, возможно, обнаружил проблему. Похоже, если я открою ссылку из приложения из другого места, оно откроет ссылку в свернутом окне. Однако, если я открою его из текущего пространства, он откроется в окне на переднем плане. Протестировал в приложении Notes.
@SkeletonBow: Привет из будущего! - ха-ха. Я знаю, что вы задали свой вопрос 2,5 года назад, и мне любопытно, происходит ли поведение, которое вы описали в своем вопросе, все еще в High Sierra или Mojave. Я использую Mojave с декабря 2018 года, и у меня сложилось впечатление, что ссылка, нажатая вне Safari, всегда открывается в любом окне Safari, которое находится впереди. У меня есть установка с тремя дисплеями, и я обычно запускаю ее с включенной настройкой «Дисплеи имеют отдельные пробелы» (в настройках управления полетами), но в остальном я обычно не использую пробелы.
@jdmc Эй, спасибо за комментарий! Я не использовал Safari какое-то время (использую Chrome по разным причинам), но, насколько я помню, у меня все еще была эта проблема в Мохаве, когда я его использовал. Я проведу еще немного испытаний и посмотрю, что произойдет!
Мне кажется, что они/Safari изменили это поведение и теперь он открывает его в последнем использовавшемся/активном окне.

Ответы (3)

Это можно сделать с помощью приложения AppleScript, которое открывает ссылку в Safari и делает это приложение браузером по умолчанию.

Во время тестирования я нашел две версии: либо открывать в новых окнах, либо в новых вкладках, если в текущем пространстве уже есть окно.

  • Откройте Script Editor.app (или даже лучше Script Debugger)

  • Если вы хотите, чтобы ссылки открывались в новом окне, используйте этот

    on open location theURL    
        tell application "Safari"  
            make new document with properties {URL:theURL}  
            activate  
        end tell  
    end open location  
  • Если вы хотите, чтобы ссылки открывались в новой вкладке (если окно доступно в текущем пространстве), используйте это:
    on open location theURL  
        tell application "System Events"  
            tell process "Safari"  
                try  
                    set frontWinName to name of window 1 
                on error  
                    my openNewWindow(theURL)  
                    return  
                end try  
            end tell  
        end tell  

        tell application "Safari"  
            try  
                tell (first window whose name is frontWinName and miniaturized is false)  
                    set current tab to make new tab with properties {URL:theURL}  
                    activate  
                end tell  
            on error  
                my openNewWindow(theURL)  
            end try  
        end tell  
    end open location  


    on openNewWindow(theURL)  
        tell application "Safari"  
            make new document with properties {URL:theURL}  
            activate  
        end tell  
    end openNewWindow  
  • Сохранить как приложение

  • Если вы не хотите, чтобы приложение отображалось в доке

    • Щелкните правой кнопкой мыши приложение, перейдите в пакет и найдитеInfo.plist

    • Добавьте это вInfo.plist

        <key>LSUIElement</key>  
        <true/>
    
  • Установите приложение в качестве браузера по умолчанию (я использовал RCDefaultApp).

Если вы хотите увидеть, насколько раздражающим является поведение ссылки по умолчанию в macOS, я предлагаю через несколько часов вернуться к Safari в качестве браузера по умолчанию ...

Я все еще на 10.14.6 и не знаю возможных ограничений в Каталине.

Это работает! И это единственное решение, которое я видел где-либо в Интернете. Чтобы установить браузер по умолчанию, я использовал SwiftDefaultApps ( github.com/Lord-Kamina/SwiftDefaultApps/releases/tag/v2.0.1 ), поскольку RCDefaultApp не работает с Catalina. Я не редактировал Info.plist, и приложение не отображалось в доке независимо.
Следует отметить, что в более поздних версиях macOS для этого также требуются разрешения автоматизации в файлах System Preferences/Settings > Security & Privacy. Я не смог заставить это запускаться без какой-либо комбинации редактирования сценария для вызова системных событий при запуске (для тестирования), повторного создания приложения через редактор сценариев и запуска его вручную, а также запуска приложения вручную, чтобы вызвать Export > Appэто . Более систематический подход к получению надлежащих разрешений был бы долгожданным обновлением этого решения.

Как разработчик, я исследовал возможность того, что расширения могут достичь того, чего вы хотите, всегда открывая новое окно при нажатии на ссылку, содержащуюся за пределами самого Safari. К сожалению, я не думаю, что такой подход будет возможен.

К сожалению, Safari не позволяет расширениям определять происхождение новой вкладки/окна. Под этим я подразумеваю, что новая вкладка может быть создана, потому что пользователь щелкает ссылку в электронном письме, щелкает ссылку в Safari, удерживая нажатой клавишу Command, открывает закладку Safari, щелкает ссылку в документе PDF или что-либо еще. одно из нескольких других действий, которые откроют страницу в новой вкладке. Независимо от метода, Safari не сообщает, как окно было открыто для расширения Safari.

Поскольку все эти события выглядят одинаково, ни одно расширение не может заставить ссылки из-за пределов Safari открываться в новых окнах, не затрагивая при этом ссылки, открытые другими способами (в том числе при просмотре в Safari).

Хотя изначально он не открывается в нужном вам окне, вы всегда можете захватить вкладку и переместить ее в другое окно Safari сразу после его открытия.

Не уверен, поможет это или нет, просто предложение.

Спасибо за ответ! Единственное, я ищу вариант, который в первую очередь избегает этого :)