【问题标题】:How to open html file with anchor(#) in C# with default browser如何使用默认浏览器在 C# 中使用锚点(#)打开 html 文件
【发布时间】:2012-12-13 04:17:39
【问题描述】:

我正在尝试在 c# 中打开上下文帮助文件。

当我不指定锚点时,它可以完美运行。

Process.Start("C:/Help/Help.htm")

但是当我指定锚点时,它并没有打开

Process.Start("C:/Help/Help.htm#_Toc342057538")

在内部它将'#' 更改为'%23',并且路径变为浏览器无法识别的"c:\Help.htm%23_Toc342057538"

浏览器打开路径"c:\Help.htm#_Toc342057538"成功

如何通过Process.Start 停止这种自动转换。如果我将锚标签作为另一个参数或使用 Uri 类,则会观察到相同的行为。

编辑 当我在 Window Run 中输入字符串时,观察到相同的行为。以下命令还将# 转换为%23,浏览器无法识别。

chrome c:/Help.htm#_Toc342057538

【问题讨论】:

  • 您是否尝试过打开用户默认浏览器并将文件作为参数传递(Process.Start 中的第二个参数)?默认浏览器检查的示例如下:stackoverflow.com/questions/2707799/…

标签: c# .net html uri anchor


【解决方案1】:

在我的 Windows 7 系统上,以下两个都在 Internet Explorer 中打开 C:\Help\Help.htm 并滚动到 _Toc342057538 锚点:

Process.Start("iexplore", "file://C:/Help/Help.htm#_Toc342057538");
Process.Start("iexplore", @"C:\Help\Help.htm#_Toc342057538");

对于 Firefox 和 Chrome,似乎只有 file 协议有效:

Process.Start("firefox", "file://C:/Help/Help.htm#_Toc342057538");
Process.Start("chrome", "file://C:/Help/Help.htm#_Toc342057538");

【讨论】:

    【解决方案2】:

    试试这个。我只是自己做的,并在 Internet Explorer 中工作

    string s = "file:///D:/tmp/test.html%23test";
          s = uri.UnescapeDataString(s);
    
          Process.Start(s);
    

    请让我知道它是否适合您。

    【讨论】:

    • 是你的默认浏览器firefox,我的是internet explorer,它似乎可以正常工作
    • 它适用于 file://D:... 而不是 file:///d:.... 似乎额外的反斜杠是问题
    猜你喜欢
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2014-12-06
    相关资源
    最近更新 更多