我正在尝试在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
答案 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);
请告诉我它是否有效。