我有一个带有使用说明的html文件。我用
来称呼它File htmlFile = new File("Usage.html");
Desktop.getDesktop().browse(htmlFile.toURI());
这会使用我的默认浏览器打开html文件,但我希望它滚动到特定部分。
我通过引用id <a href="#how-to-use">
在html中执行此操作,但是可以在从我的程序中打开文件时滚动到该部分吗?
答案 0 :(得分:2)
<强>注意:强> 这个答案在使用Windows时不起作用,Windows在使用默认程序打开程序时会删除#和剩余字符,这是应该由Windows修复的,并且它不会在Linux上发生,{{ 3}}
您可以手动将哈希附加到网址:
URI uri = htmlFile.toURI();
Desktop.getDesktop().browse(new URI(
uri.getScheme(),
uri.getUserInfo(),
uri.getHost(),
uri.getPort(),
uri.getPath(),
uri.getQuery(),
"how-to-use"));
我们不能使用简单的+操作,因为我们有一个URI对象,URI没有设置组件方法。
答案 1 :(得分:0)
您可以使用Selenium
执行此操作
WebDriver driver = new ChromeDriver();
driver.get("file:///D:/Usage.html"); // path can be different in your computer
WebElement href = driver.findElement(By.cssSelector("[href*='how-to-use']"));
Actions actions = new Actions(driver);
actions.moveToElement(href).build().performe();
这将在Chrome浏览器中打开html文件(如果愿意,可以更改)并滚动到moveToElement
中的元素。
答案 2 :(得分:0)
如果以上答案不起作用,
您可以使用哈希/参数打开网址,但网址不应该是本地网址。 例如
www.google.com#tar1
可以使用
example.html#tar1
无法[本地主持人]
所以如果你想用hashtag打开本地网址,那么另一种方式是什么?。
首先将html页面写入另一个本地文件,但添加此代码行。
<meta http-equiv="refresh" content="0; ,URL=editedfileurl">
现在您可以启动编辑文件而不是原始文件。然后编辑的文件将使用哈希标记刷新,因此将滚动到所需的锚标记。