HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2016
0105
チャーくんウェブ ページのアイコンを取得したい8未解決


チャーくん

リンク

2016/1/5(Tue) 14:02:00|NO.74004

ブラウザを作っているチャーくんです。
タイトルの通り、サイトのアイコンを取得したいのですが…

サイトのアイコンがホームページの下の「favicon.ico」にあるのはわかったのですが、
それをHSP上で表示したりするにはどうすればよいのでしょうか。
Google先生とYahoo!とBingで調べましたが、わかりませんでした。
どなたか教えていただけないでしょうか?



この記事に返信する


スペース

リンク

2016/1/5(Tue) 14:05:16|NO.74005

メモリ上にファイルをダウンロードしてメモリストリームとかを使ってpicloadで開けばいいんじゃないかな。



kanamaru

リンク

2016/1/5(Tue) 14:33:18|NO.74006

ファビコンってfavicon.ico以外も有り得ますよ。
現に、僕の知り合いのサイトなんかランダム文字列ですし。
だから、きちんとlinkタブとかから取得する必要があると思います。



ぽよ

リンク

2016/1/5(Tue) 15:09:35|NO.74009

ファビコンのパスは html の link 要素(rel は "icon" または "shortcut icon")か .htaccess で指定されます。
どちらもないときはブラウザーによっては favicon.ico を自動的にファビコンと認識します。

とりあえず link 要素に絞ると、*を任意の0個以上の文字列としたとき、文字列操作関数なり mod_regexp なりで、HTMLの中から

<link*rel="*icon"*href="ファビコンのパス"*> <link*href="ファビコンのパス"*rel="*icon"*>
を検索してパスを取得し、表示させます。
(hspinet でダウンロードして picload 命令で読み込むのが手っ取り早い)



ぽよ

リンク

2016/1/5(Tue) 15:20:24|NO.74010

……と書いたものの、ファビコンのパスを取得するもっとスマートな方法はあると思います。

ついでに、ネット上の画像ファイルは mod_img.as の imgload 命令で直接表示できます。



Velgail

リンク

2016/1/5(Tue) 15:47:06|NO.74011

試しにgoogleのfacivon.icoをpicloadしたら、なるほど開けない。

ということで、icoファイルの中身を見つつ、ソフトを書いたのですが……
参考URLをふと見たら、hspの文字が…… もしやと思ったら、もうソースが転がっていて泣きたくなった。

ということで、http://www.setsuki.com/hsp/ の一番下の表のICO(CUR)の画像表示 を使って表示しましょう。

注:faviconの中にはPNGで書かれているものもあって、それはおそらく表示できないから工夫して(memfileとか使って)対処しましょう。



Velgail

リンク

2016/1/5(Tue) 22:14:11|NO.74012

というか、スレ主の要求はどの段階なのかイマイチわからなかったので、統括的に書く。

1. そもそもファビコンの位置は?
原則:ドメインのルートにfavicon.icoを使う。
例外:link要素がある場合はそちらを優先する。
でおおよそ十分です。htaccess対応は、HTTPヘッダに何かあるかもしれないですが、それについて言及しているサイトは見当たらず。

2. DLの仕方は?
netrequest_getでメモリロードが最も手軽だと思います。後述の描画に向けて、メモリロードで事足ります。
但し、毎回DLするのが嫌だからキャッシュしたいという理由でnetrequestで実装するのは問題ないとおもいます。
ここは実装者の好みに依存します。

3. 表示の仕方は?
picload, imgload共に「不適切」です。(異論があるならGoogleのファビコンを表示させてみましょう)
http://www.setsuki.com/hsp/ の一番下の表のICO(CUR)の画像表示 を使うことで、表示が可能になります。
但し、実装上PNGタイプのアイコンは表示できないと思います。
PNGファイル系ファビコンの表示が必要なら、更に実装し直さないといけないでしょう。



kanamaru

リンク

2016/1/5(Tue) 22:27:27|NO.74013

pngファイルシグネチャを見て判断すればいいですね。(以後シグネチャ)
シグネチャを見て、pngだったらpicloadやimgloadで表示、
違ったら上記参考URLを使えば表示出来ると思います。



ぽよ

リンク

2016/1/7(Thu) 11:10:56|NO.74035

当然ながら picload、imgload はマルチ アイコン非対応です。
しかし、いずれにせよどうやら imgload 命令は IE8 以前がないと使えないようです。

代替手段は既出ですが、一応、念のため……



ONION software Copyright 1997-2023(c) All rights reserved.