Может ли библиотека рабочего стола Java запустить URL в новой вкладке или окне браузера? - PullRequest
3 голосов
/ 01 апреля 2009

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

Это проблема, если браузер используется для чего-то другого, например, для ввода данных. Есть ли способ открыть URL в новом окне браузера (или вкладке)?

public static void openURL(String urlText)
{
    if (Desktop.isDesktopSupported())
    {
        URI uri = URI.create(urlText);
        try
        {
            Desktop.getDesktop().browse(uri);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

С другой стороны, есть ли лучший способ сделать это?

Ответы [ 5 ]

2 голосов
/ 02 апреля 2009

Посмотрите на BrowserLaunch2 . В частности этот метод для принудительного открытия нового окна.

1 голос
/ 02 апреля 2009

Вы можете использовать метод Yose, чтобы определить, какой браузер используется по умолчанию, а затем использовать следующие команды:

firefox.exe -new-tab т.е. 7 http://blogs.msdn.com/tonyschr/archive/2007/01/19/ie-automation-amp-tabs.aspx опера -newpage

Обратите внимание, что некоторые браузеры не поддерживают вкладки или не имеют параметров командной строки для открытия URL-адреса во вкладке. В этом случае вы можете использовать скриптовый движок AHK.

1 голос
/ 01 апреля 2009

Скорее всего, вам потребуется настроить это в браузере, а не в коде запуска. Возможно, вам удастся найти некоторые флаги запуска, вызывающие желаемое поведение, но в процессе вы будете привязывать свой код к определенному браузеру.

0 голосов
/ 02 апреля 2009

Похоже, что java.awt.Desktop API не предоставляет такой уровень функциональности.

Вот ссылка, которую мы нашли на форумы java.net , где об этом спрашивали в 2006 году.

Ответ там ссылается на Веб-браузер JDIC .

0 голосов
/ 01 апреля 2009

В Windows есть способ найти браузер по умолчанию. Вам придется использовать команды

REG QUERY HKCR\.html /ve

, который вернул бы

! REG.EXE VERSION 3.0

HKEY_CLASSES_ROOT\.html
    <NO NAME>   REG_SZ  FirefoxHTML

Затем вы запросите FirefoxHTML (или любое другое значение, которое было возвращено), используя ту же команду, и добавите следующее к ключу

REG QUERY HKCR\FirefoxHTML\shell\open\command /ve

и это вернет

! REG.EXE VERSION 3.0

HKEY_CLASSES_ROOT\FirefoxHTML\shell\open\command
    <NO NAME>   REG_SZ  "C:\Program Files\Mozilla Firefox\firefox.exe" -requestPending -osint -url "%1"

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

Вы можете сделать все это, используя класс Java Runtime:

Runtime.getRuntime.exec(cmdString);

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

Вот пример доступа к реестру Windows в Java.

Вы также можете найти в Google дополнительную информацию о поиске браузера по умолчанию в реестре.

Что касается других платформ (Mac, Linux и т. Д.), Я уверен, что есть особый способ получить путь к браузеру по умолчанию.

Надеюсь, это поможет!

...