12

Java プログラムから、ファイル内のアンカーを指すローカル HTML ファイルでデフォルトのブラウザーを起動する必要があります。Java SE 6 では、java.awt.Desktop.browse メソッドはファイルを開きますが、アンカーを尊重しません。そのため、次のようなコードはファイルを上部で開きますが、ブラウザーをアンカーにページングしません。

Desktop.getDesktop("file:///C:/foo/bar.html#anchor");

Sun はここhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6477862で、ファイル URI プロトコルではアンカーがサポートされていないと述べています。

誰かがより良い答えを持っていますか?

Java SE 6 を使用できます。Windows のみのソリューションで問題ありません。

4

5 に答える 5

3

これらの例のいずれにおいても、引用符やスペースの量がうまくいかなかったため、これを別の方法で解決しました。

1 ファイル URI にアンカーまたはクエリ文字列があるかどうかを検出する

File tmpfile = File.createTempFile("apphelp", ".html")2 その場合、必要な実際のファイル URI へのメタリダイレクトを含む一時ファイルを作成します。

<html><head>
<meta http-equiv="refresh" content="0;url=help.html#set_filter" />
</head></html>

3 新しい一時 URI を使用して、ローカルの rundll コマンドを実行します。

Runtime.getRuntime().exec(
  "rundll32 url.dll,FileProtocolHandler \"" 
  +tmpfile.toURI().toString()+ "\"");

これがうまくいくことを願っています!

于 2012-11-07T20:11:51.793 に答える
1

Windows での解決策は次のとおりです。

rundll32 URL.dll、FileProtocolHandler "file:///x:/temp/fragtest.htm#frag"

引用符に注意してください!!!

rundll32 URL.dll、FileProtocolHandler file:///x:/temp/fragtest.htm#frag は期待どおりに動作します。

于 2010-11-12T09:03:30.233 に答える
0

ここでこの項目について調査を行いました - 開いcmdたり入力したりstart file:///c:/temp/test.html#anchorしても機能しないことに注意してください。

実際に機能する唯一の方法は、ブラウザーを手動で呼び出す (またはこれを行うサードパーティ ツールを使用する) ことだと思います。

Windows では常に Internet Explorer を使用しているため、Runtime.getRuntime().exec("cmd.exe start iexplore " + myURL)自分で iexplore.exe を見つけたくない場合は呼び出すことができますが、これも常に機能するとは限りません。

于 2012-02-08T19:10:23.183 に答える
0

BrowserLauncher2を使用してみてください。これは、既定のブラウザーを開くための小さな自己完結型のクロスプラットフォーム ライブラリです。アンカーを完全に処理します。

于 2009-06-12T11:05:50.853 に答える
0

Windowsの場合のみ、試すことができます

System.exec("cmd.exe start file:///C:/foo/bar.html#anchor")
于 2008-11-27T07:56:52.740 に答える