如何确定Windows默认浏览器(位于开始菜单的顶部)?
我正在使用VB6,但可能适应其他代码没有问题.
Stack Overflow上有类似的问题,但它们似乎提供了错误的答案.
例如,密钥HKEY_LOCAL_MACHINE\Software\Clients\StartMenuInternet \在我的PC上列出了Internet Explorer和Firefox.
并且.html关联也失败了,因为HTML文件与IE相关联,但Firefox是我的默认浏览器.
请注意,我不想实际打开浏览器,只需获取它的名称即可.
我正在开发一个 javafx 应用程序,要求是单击超链接时,它会在浏览器中打开给定的 url。我有这个与以下工作
url = "files/file.html";
getHostServices().showDocument(url);
Run Code Online (Sandbox Code Playgroud)
但是,当 url 包含自动聚焦页面特定部分的 id 时,浏览器永远不会启动。没有错误,似乎没有记录任何内容表明出现任何问题,浏览器永远不会打开。无法找到遇到此问题的其他人或任何潜在的解决方案。
太棒了;如何让以下内容实际工作并在浏览器中打开?
String url = "files/file.html#section";
getHostServices().showDocument(url);
Run Code Online (Sandbox Code Playgroud)
另外,这似乎只是本地文件的问题。以这种方式打开 https 网站效果很好
更新: 感谢 Sai 的精彩帖子,听起来官方的结论是,这是一个比 Java 更深层次的问题,并且只是出于与数据注入相关的安全原因而被阻止。不会假装理解,但我找到了一个基于此链接的解决方案(再次由 Sai 在下面共享),更具体地说,是在该答案中共享的此链接,并希望将其包含在未来任何困惑的人中。我还更新了标题以更具体地解决问题。
所以基本上,获得所有功能的唯一真正的方法是创建一个临时文件,然后打开该文件,自动重定向到带有片段的正确文件,然后删除它。基本代码如下:
public static void openWebPage(String url) {
String tmpPath = "path/to/.tmp/temp.html";
File tempFile = File(tmpPath);
if (!tempFile.exists()) {
tempFile.mkdirs();
} else {
tempFile.delete();
}
tempFile.createNewFile();
FileWriter tempFileWriter = FileWriter(tmpPath);
tempFileWriter.write("<html><meta http-equiv=Refresh content=\"0; url=$url\"><body></body></html>");
tempFileWriter.close();
Main.getStaticHostServices().showDocument(tmpPath);
}
Run Code Online (Sandbox Code Playgroud)