如何使用默认浏览器在C#中使用锚点(#)打开html文件

时间:2012-12-13 04:17:40

标签: c# .net html uri anchor

我正在尝试在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 class。

,则会观察到相同的行为

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

chrome c:/Help.htm#_Toc342057538

2 个答案:

答案 0 :(得分:2)

在我的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");

答案 1 :(得分:0)

试一试。我只是自己做了,并在Internet Explorer中工作

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

      Process.Start(s);

请告诉我它是否有效。