Откройте браузер с Java

1

У меня есть Java-программа с двумя кнопками, одна для хром и одна для firefox. Я нажимаю один из них, и браузер запускается в каком-то конкретном месте на экране и с небольшим размером.

Я пытаюсь запустить команды терминала, что-то вроде этого

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"  --profile-directory="Default" --app="data:text/html,<html><body><script>window.moveTo(198,60);window.resizeTo(1167,708);window.location='https://stackoverflow.com';</script></body></html>"

И это работает, но только для хрома. Я хочу, по крайней мере, хром и firefox как на окнах, так и на linux.

Искав немного, я столкнулся с другим решением. Запуск javascript на java, somethig вроде:

    ScriptEngineManager factory = new ScriptEngineManager();
    ScriptEngine engine = factory.getEngineByName("JavaScript");             
    engine.eval("window.open('https://stackoverflow.com')");
    engine.eval("window.resizeTo(800,600)");

Но Im получает ошибки компиляции:

ReferenceError: "window" is not defined in <eval> at line number 1

И я не знаю, что происходит. Идеи?

  • 2
    Вы пытались обернуть строку URL в некоторые кавычки?
  • 0
    хорошо спасибо! Теперь я получаю ReferenceError: "окно" не определено в <eval> в строке номер 1
Показать ещё 5 комментариев
Теги:

2 ответа

0

Для Windows вы можете сделать что-то вроде этого, используя Runtime:

Runtime rt = Runtime.getRuntime();
rt.exec("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe stackoverflow.com");

Я считаю, что вы можете сделать что-то подобное для Google Chrome. Я взглянул на код, который я реализовал в прошлом для Chrome, и это было немного иначе, но предыдущий подход должен работать:

Runtime rt = Runtime.getRuntime();
rt.exec(new String[]{"cmd", "/c","start chrome http://www.stackoverflow.com"});

Если вы хотите сделать это для ОС на базе Linux, вы также можете использовать Runtime:

Runtime rt = Runtime.getRuntime();
rt("/usr/bin/firefox -new-window http://www.stackoverflow.com");

Я помню, что у меня есть ссылки на эту страницу:

https://www.mkyong.com/java/open-browser-in-java-windows-or-linux/

Надеюсь, это может вам помочь.

0

ScriptEngineManager запускает скрипт на стороне сервера. window - это клиентский объект, вы не можете получить к нему доступ с сервера.

в другом слове, так как вы не выполняете свой скрипт в браузере, объект окна не определен.

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

     Desktop desktop=Desktop.getDesktop();
     URI url = new URI("http://somewhere");
     desktop.browse(url);

чтобы открыть браузер не по умолчанию в Java, вы должны использовать Runtime.exec()

для ОС Windows попробуйте это, это сработало для меня:

     String browserPath = "C:/Program Files/Mozilla Firefox/firefox.exe";
     String url = "http://somewhere";
     try {
             String[] b = {browserPath, url};
             Runtime.getRuntime().exec(b);
          }
      catch (Exception exc) {
              exc.printStackTrace();
      }

для получения дополнительной информации о том, как использовать Runtime.exec() в других ОС, читайте здесь

Ещё вопросы

Сообщество Overcoder
Наверх
Меню