据我所知,JxBrowser中没有关于网站图标的基础设施。网站图标不应该是标题事件的一部分吗?我认为最好的办法就是使用
有没有什么方法可以优雅地使用JxBrowser解决这个问题?
我尝试了两种可靠获取资源的策略,但它们都不够可靠:
基于事件的URL获取(
http://<domain>/favicon.ico
,但这将会产生很多冗余工作(HTTP客户端和缓存机制)。有没有什么方法可以优雅地使用JxBrowser解决这个问题?
我尝试了两种可靠获取资源的策略,但它们都不够可靠:
基于事件的URL获取(
ResourceType.FAVICON
从未出现):browser.context.networkService.resourceHandler = object : ResourceHandler {
override fun canLoadResource(p0: ResourceParams?): Boolean {
if (p0!!.resourceType == ResourceType.FAVICON) println(p0!!.url)
if (p0!!.resourceType == ResourceType.IMAGE && p0.url.contains("favicon")) println("found favicon url: ${p0.url}")
return true
}
}
// 基于xpath的方法
browser.addLoadListener(object : LoadListener {
override fun onDocumentLoadedInMainFrame(p0: LoadEvent) {
p0.inSwingThread {
val res = it.browser.document.findElements(By.xpath("//link[@rel=\"icon\" or @rel=\"shortcut icon\"]"))
res.forEach {
println("----------")
it.attributes.forEach { println(it.key + " " + it.value) }
}
}
}
// ...
}