以编程方式将URL中的#传递给浏览器

时间:2012-03-02 00:25:27

标签: firefox url pdf google-chrome escaping

我需要将字符#作为URL的一部分传递给浏览器并以编程方式打开它。当我执行以下操作时:

google-chrome path_to_some_file.pdf#view=Fit

浏览器上打开的页面为path_to_some_file.pdf%23view=Fit,这不是预期的网址。当我手动删除%23并在浏览器的地址栏中键入#时,它就能正常工作。如何以编程方式将字符#传递给浏览器?

1 个答案:

答案 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(我想,不确定),你可以抓取它并将哈希附加到它上面