Chromium Embedded Framework でファビコン Web サイトを取得するには? ソース コードを見てアイコンの URL を取得することはできますが、Facebook などの一部のサイトでは、ファビコンを追加する標準的な手順を使用していません。ありがとう。
4 に答える
ファビコンのルールは、 Wikipediaのページですべて説明されています。
この標準では、ドキュメントのセクションで rel 属性を持つ link 要素を使用して
<head>
、ファイル形式、ファイル名、および場所を指定して任意の Web サイト ディレクトリを指定できます。
<head>
要素内link
で、次の形式の要素を探す必要があります。
<link rel="shortcut icon" href="http://example.com/myicon.ico" />
また
<link rel="icon" type="image/vnd.microsoft.icon"
href="http://example.com/image.ico" />
favicon.ico
そのようなリンクが見つからない場合は、ルート ディレクトリを探すフォールバックを使用してください。
Facebook が標準に従っていないとあなたが考える理由がよくわかりません。これを含むFBページを見ただけです:
<link rel="shortcut icon"
href="http://static.ak.fbcdn.net/rsrc.php/yP/r/Ivn-CVe5TGK.ico" />
ウェブサイトが他のメカニズムを使用してブラウザにファビコンを取得することはできません。ブラウザーは、ファビコンを取得するための明確に定義された規則に従います。ウェブサイトが何か違うことをした場合、ブラウザはファビコンを見つけられません。
このブログ エントリから、クロス ブラウザー対応のファビコンのベスト プラクティスは、含めることです。
<link rel="icon" type="image/vnd.microsoft.icon" href="http://www.example.com/image.ico"> <!-- For good browsers. -->
<link rel="SHORTCUT ICON" href="http://www.example.com/image.ico"/> <!-- For Internet Explorer-->
最初のリンクは実際のブラウザ用で、2 番目のリンクはゴミ用です。一部の Web サイトtype="image/x-icon"
では、link
タグに表示されます。これが正しい実装だった時期もありましたが、現在は MIME タイプの IANA 標準の一部となっimage/x-icon
ているものに取って代わられています。image/vnd.microsoft.icon
ちなみに、以前のバージョンの ie は、/favicon.ico
ハードコードされたファイル名を検索するだけでした。絶対に安全にしたい場合は、ファビコンにfavicon.ico
. もちろん、ドメインがさまざまな目的で複数の Web サイトをホストしている場合、それは役に立ちません。
注: IE のファビコンをサポートする必要がない場合は、以下に示すように、ファビコンに png、gif、および jpg 形式を自由に使用できます...
<link rel="icon" type="image/png" href="http://www.example.com/image.png">
<link rel="icon" type="image/gif" href="http://www.example.com/image.gif">
<link rel="icon" type="image/jpeg" href="http://www.example.com/image.jpg">
CEF1 にはOnFaviconURLChange
、ページのファビコン URL が変更されるたびに呼び出されるという名前のコールバックがあります。CEF issue tracker のこのバグによると、CEF3 はまだこのコールバックをサポートしていません。
クライアント ハンドラーと少なくとも CefDisplayHandler を実装する必要があります。このクラスには OnFaviconURLChange があります (どのバージョンで表示されたかはわかりませんが、ブランチ 2357 以降に存在することは確かです)。C++ プロトタイプは次のとおりです。
void OnFaviconURLChange(CefRefPtr<CefBrowser> browser,
const std::vector<CefString>& icon_urls);
通常、icon_urls には、favicon の URL である単一のエントリ (存在する場合) が含まれます。
セキュリティのためにファビコン URL をチェックすることも検討してください。私は URL を HTMLayout アプリケーションに渡しましたが、それが自己署名の https:// リソース上にあり、あらゆる種類の wininet セキュリティ エラー (たとえば InternetErrorDlg) がすべての場所でスローされ始めたことを発見しました。 .