我需要将字符#
作为URL的一部分传递给浏览器并以编程方式打开它。当我做到以下几点:以编程方式将URL中的#传递给浏览器
google-chrome path_to_some_file.pdf#view=Fit
上的浏览器打开的网页是path_to_some_file.pdf%23view=Fit
,这是不是预期的URL。当我在浏览器的地址栏中手动删除%23
并键入#
时,它就可以工作。我如何以编程方式将字符#
传递给浏览器?
我需要将字符#
作为URL的一部分传递给浏览器并以编程方式打开它。当我做到以下几点:以编程方式将URL中的#传递给浏览器
google-chrome path_to_some_file.pdf#view=Fit
上的浏览器打开的网页是path_to_some_file.pdf%23view=Fit
,这是不是预期的URL。当我在浏览器的地址栏中手动删除%23
并键入#
时,它就可以工作。我如何以编程方式将字符#
传递给浏览器?
您需要指定完全限定的file:///
URL以包含?
查询或#
哈希字符串。
更多细节:
下面的做法,IE10,火狐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应该仍然可以正常工作。
如果您使用的是比批处理文件更强大的功能,则可以将所有\
s翻译成/
s以创建正确的URL。在.NET中,我认为你可以做new Uri("C:\blah\file.pdf")
,它会给你一个文件URI(我认为,不确定),然后你可以抓取并在其上附加散列。
有趣。它正在自动逃脱......我想知道在这种情况下可能不可能? – 2012-03-02 00:38:12
@pst可能是这样的。问题是pdf规范告诉我要放一个'#':http://floatboxjs.com/content/parameters.pdf#page=8 – sawa 2012-03-02 00:49:47
你可能想在超级用户堆栈上试试这个。 – 2012-03-02 05:45:19