Java 如何在打开html文件时滚动到html页面的特定部分?
我有一个带有使用说明的html文件。我称之为使用Java 如何在打开html文件时滚动到html页面的特定部分?,java,html,Java,Html,我有一个带有使用说明的html文件。我称之为使用 File htmlFile = new File("Usage.html"); Desktop.getDesktop().browse(htmlFile.toURI()); 这将使用默认浏览器打开html文件,但我希望它滚动到特定部分。 我在html中通过引用id来实现这一点,但是当文件从我的程序中打开时,是否可以滚动到该部分 注意: 这个答案在使用Windows时不起作用,Windows在使用默认程序打开程序时会删除#和剩余字符,这应该由Wi
File htmlFile = new File("Usage.html");
Desktop.getDesktop().browse(htmlFile.toURI());
这将使用默认浏览器打开html文件,但我希望它滚动到特定部分。
我在html中通过引用id
来实现这一点,但是当文件从我的程序中打开时,是否可以滚动到该部分
注意:
这个答案在使用Windows时不起作用,Windows在使用默认程序打开程序时会删除#和剩余字符,这应该由Windows修复,在Linux上不会出现
您可以手动将哈希附加到url:
URI=htmlFile.toURI();
Desktop.getDesktop().browse(新URI(
uri.getScheme(),
uri.getUserInfo(),
uri.getHost(),
uri.getPort(),
uri.getPath(),
uri.getQuery(),
“如何使用”);
我们不能使用简单的+操作,因为我们有一个URI对象,URI没有一个集合组件方法。您可以使用
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
中的元素
您可以使用散列/参数打开url,但url不应是本地的。
比如说
www.google.com#tar1
将起作用,但
example.html#tar1
不工作[本地主机]
所以,如果你想用hashtag打开本地url,另一种方法是什么呢
首先将html页面写入另一个本地文件,但添加此代码行
<meta http-equiv="refresh" content="0; ,URL=editedfileurl">
因此,现在您可以启动编辑文件而不是原始文件。然后,编辑后的文件将用哈希标记刷新,因此将滚动到所需的锚标记。该html文件是您的吗?您可以编辑吗?@FastSnail是的,它是我的。您可以从服务器(如www.google.com#tar1)打开url,但不能从本地文件(如example.html#tar1)打开url,您可以使用localhost吗??如果您想在没有服务器的情况下在本地打开它,请阅读我的回答。嗯,这对我不起作用,它不会滚动到指定的部分。@我想我的测试是错误的,这是一个仅适用于Windows的错误,所有程序都有它。它可以在Linux上正常工作,但Windows在打开文件URL的默认程序时会去掉#和剩余部分。啊,我明白了,我想知道为什么它仍然不工作。谢谢。这只适用于Firefox和Internet Explorer。顺便说一句,它能够实现我想要的功能,但它会不断将用户带到特定的部分,这不是很理想。@Csh您不想带什么到特定的部分?我想我不清楚。我只需要在用户单击某个按钮时将其转到该部分。在其他情况下,当用户想要读取html文件时,它应该只是正常加载,而不是自动滚动到定位标记。@Csh因此,您应该只在特定时间编辑html文件。在其他情况下,只需打开原始文件即可