2012-03-02 67 views
2

我需要将字符#作为URL的一部分传递给浏览器并以编程方式打开它。当我做到以下几点:以编程方式将URL中的#传递给浏览器

google-chrome path_to_some_file.pdf#view=Fit 

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

+0

有趣。它正在自动逃脱......我想知道在这种情况下可能不可能? – 2012-03-02 00:38:12

+0

@pst可能是这样的。问题是pdf规范告诉我要放一个'#':http://floatboxjs.com/content/parameters.pdf#page=8 – sawa 2012-03-02 00:49:47

+0

你可能想在超级用户堆栈上试试这个。 – 2012-03-02 05:45:19

回答

3

您需要指定完全限定的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(我认为,不确定),然后你可以抓取并在其上附加散列。

相关问题