我需要将字符#
作为URL的一部分传递给浏览器并以编程方式打开它。当我执行以下操作时:
google-chrome path_to_some_file.pdf#view=Fit
浏览器上打开的页面为path_to_some_file.pdf%23view=Fit
,这不是预期的网址。当我手动删除%23
并在浏览器的地址栏中键入#
时,它就能正常工作。如何以编程方式将字符#
传递给浏览器?
答案 0 :(得分:3)
您需要指定一个完全限定的file:///
网址,以便包含?
个查询或#
哈希字符串。
更多详情:
以下方法适用于IE10,Firefox 28和Chrome 36。
如果您使用Windows中的任何浏览器从批处理文件执行此操作,只要在file:///
前添加前缀,就可以在路径中使用反斜杠。例如,file:///C:/blah/blah/file.pdf#etc
是正确的网址,但如果您的网址最终格式为file:///C:\blah\blah\file.pdf#etc
,那么这也会有效。
以下是使用批处理文件获取完整路径的方法。
file:///%CD%/file.pdf#blah
将解析为相对于工作目录的文件(通常是批处理文件的目录,而不像通过命令提示符或以编程方式显式更改)。
file:///%~dp0/file.pdf#blah
将解析为相对于批处理文件目录的文件。我通常会这样做。
您可以使用../
向上导航相对于批处理文件的目录。生成的URL仍然可以正常工作。
如果您使用的内容比批处理文件更强大,则可以将所有\
转换为/
以创建正确的网址。
例如,在.NET中,我认为你可以做new Uri("C:\blah\file.pdf")
,并且它会给你一个文件URI(我想,不确定),你可以抓取它并将哈希附加到它上面