当我打开html文件时,如何滚动到html页面的特定部分?

时间:2016-01-26 08:55:30

标签: java html

我有一个带有使用说明的html文件。我用

来称呼它
File htmlFile = new File("Usage.html");
Desktop.getDesktop().browse(htmlFile.toURI());

这会使用我的默认浏览器打开html文件,但我希望它滚动到特定部分。 我通过引用id <a href="#how-to-use">在html中执行此操作,但是可以在从我的程序中打开文件时滚动到该部分吗?

3 个答案:

答案 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">

现在您可以启动编辑文件而不是原始文件。然后编辑的文件将使用哈希标记刷新,因此将滚动到所需的锚标记。