我需要将字符 #
作为 URL 的一部分传递给浏览器并以编程方式打开它。当我执行以下操作时:
google-chrome path_to_some_file.pdf#view=Fit
浏览器上打开的页面是path_to_some_file.pdf%23view=Fit
,这不是预期的URL。当我手动删除 %23
并在浏览器地址栏中输入 #
时,它就可以工作了。如何以编程方式将字符 #
传递到浏览器?
最佳答案
您需要指定完全限定的 file:///
URL 才能包含 ?
查询或 #
哈希字符串。
更多详细信息:
以下方法适用于 IE10、Firefox 28 和 Chrome 36。
如果您在 Windows 中使用任何这些浏览器通过批处理文件执行此操作,则可以在路径中使用反斜杠,只要前缀为 file:///
。例如,file:///C:/blah/blah/file.pdf#etc
是正确的 URL,但如果您的最终格式为 file:///C:\blah\blah\file.pdf#etc
,那也可以。
以下是如何使用批处理文件获取完整路径。
file:///%CD%/file.pdf#blah
将解析为相对于工作目录的文件(通常是批处理文件的目录,与通过命令提示符或以编程方式显式更改不同)。
file:///%~dp0/file.pdf#blah
将解析为相对于批处理文件目录的文件。我通常会这样做。
您可以使用 ../
相对于批处理文件的目录向上导航。生成的 URL 应该仍然可以正常工作。
如果您使用的文件比批处理文件更强大,则可以将所有 \
转换为 /
来创建正确的 URL。
例如,在.NET中,我认为你可以执行new Uri("C:\blah\file.pdf")
,它会给你一个文件URI(我认为,不是当然),然后您可以抓取并将哈希值附加到其上。
关于firefox - 以编程方式将 URL 中的 # 传递到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9526335/