2009-11-18 64 views
0

我试图从我的Java应用程序中打开帮助文件。我能够做到这一点使用线路:从命令行使用内部链接打开htm文件

Runtime.getRuntime().exec(new String[] {strPath, strUrl}); 

其中strPath的是通向IEXPLORE.EXE和strURL是我的帮助文件的路径。但是,当我传递一个包含空格的内部链接(例如“c:... \ helpfile.htm#some section”)的帮助文件时,该页面将在IE中打开,但不会跳转到相应的部分。如果我用“%20”替换空格,则会发生同样的情况。

在XP中使用命令行会发生更奇怪的事情。当我运行:

c:\> path\to\iexplore.exe "path\to\helpfile.htm#some section" 

我得到同样的行为上面,但如果我键入:

c:\> path\to\iexplore.exe "path\to\helpfile.htm#some%20section" 

IE浏览器将启动,但它不会打开该文件在所有的,我也得到指向我的主页。

将其中带有空格的帮助文件路径放入IE的地址栏中会成功将我指向正确的部分。同样,Firefox看起来好像没有这些缺点。

我不相信我可以做很多改变htm文件的布局或内部链接的名称。有没有人遇到过这个问题,并有任何建议如何克服它?谢谢!

回答

0

使用Desktop类,像这样:

Desktop.getDesktop().browse(new Uri(path)); 

记住,有些人(包括我自己)使用Firefox而不是IE浏览器。

+0

如果这是默认浏览器,这将启动FF而不是IE,但它似乎完全忽略URI末尾的片段“#some%20section”。我如何让浏览器转到完整路径,而不是仅仅是htm文件? – 2009-11-18 15:55:21

0

您是否尝试过使用文件网址?

\path\to\iexplore.exe file:///path/to/your/helpfile.html#some%20section 
+0

试过了,它还是一个不行。该html文件将出现在IE中,并且地址栏中的地址是正确的,但它不会转到指定的部分,如果我点击“go”按钮,它仍然不会转到正确的部分。让它正确导航的唯一方法是替换“some%20section”的“%20”(它出现在地址栏中,无论我是否在命令行使用“#some section”或“#some%20section” )与实际空间。 – 2009-11-19 14:18:44

+0

您使用的是什么版本的IE?我开始隐约回忆起在IE7(已知的bug)中命令行锚点导航问题... – 2009-11-19 16:45:54

相关问题