我有一个Java程序,带有两个按钮,一个用于chrome,一个用于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>"
它有效,但仅适用于chrome。我至少要在Windows和Linux上都使用chrome和Firefox。
稍作搜索,我遇到了其他解决方案。在Java上运行javascript,例如:
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.eval("window.open('https://stackoverflow.com')");
engine.eval("window.resizeTo(800,600)");
但是我收到编译错误:
ReferenceError: "window" is not defined in <eval> at line number 1
我不知道怎么回事。想法?
答案 0 :(得分:0)
$("#add").on('click', function (e) {
e.preventDefault()
$("#container").append(html);
tinymce.remove()
tinymce.init({
selector:".yourSelectorName"
});
});
在服务器端运行脚本。 ScriptEngineManager
是一个客户端对象,您无法从服务器访问它。
换句话说,因为您没有在浏览器中执行脚本,所以未定义窗口对象。
您可以尝试通过这种方式在操作系统的默认浏览器上打开网站:
window
要在Java中打开非默认浏览器,应使用 Desktop desktop=Desktop.getDesktop();
URI url = new URI("http://somewhere");
desktop.browse(url);
对于 Windows 操作系统,请尝试以下操作:
Runtime.exec()
有关在其他操作系统read here上如何使用 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();
}
的更多信息
答案 1 :(得分: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 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/
希望它可以为您提供帮助。