У меня есть 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
И я не знаю, что происходит. Идеи?
Для 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/
Надеюсь, это может вам помочь.
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()
в других ОС, читайте здесь