お気に入りに追加:今更こんな事に嵌ってしまって。どうしようも無かったんだけど、一応記録、まとめておこう。Chromeには参った ・・・ 【JavaScript】
とりたてて新しいネタは無いんですが・・・
昨日・今日、いくつかの小さなことに翻弄され
かなりの時間を消費。
悔しいのでまとめておきます。
まず
■「お気に入りに追加」ネタ
最近は、いくつかの便利なWebサービスもあり
基本的に特に困りはしないのですが。
今日嵌ったのは、
例の
・IEは、
window.external.AddFavorite(toURL,toTitle);
・Firefoxは、
window.sidebar.addPanel(toStr,toURL,'');
・Operaは、
rel='sidebar' を含んだURLで飛ばすんだよ
っていうやつですね。
これだけ、Chrome族が増えてきていて、今はどうなんだ。
それに他のマイナーブラウザ(失礼!)はどうなんだ! と。
決局駄目だったんですけどね。あぁ、悔しい。
顛末を。
追記に ▼
************************************************
◎ お気に入りに追加、やはり駄目?、の巻:JavaScript
************************************************
もう随分前から一応知っていて、
放りっぱなしいしていた
■「お気に入りに追加」ボタン
のメンテナンス。
ちょっと気になって、
調べ始めて、
嵌って、時間かかって
仕事全然進まなかった、とほほ。
■結論
・いくつかのマイナーブラウザもありますが、
function ToFavorite(toURL,toStr){
//Internet Explorer
if(navigator.userAgent.indexOf("MSIE") > -1){
window.external.AddFavorite(toURL,toStr);
}else{
//Lunascape
if(navigator.userAgent.indexOf("Lunascape") > -1){
alert("[Ctrl]と[G}ボタンを同時に押してください。");
}else{
//Flock
if(navigator.userAgent.indexOf("Flock") > -1){
// window.open(toURL,'sidebar','title='+toStr); //パネル開くが引数渡されず
window.sidebar.addPanel(toStr,toURL,''); //パネル開くが引数渡されず 挙動不審
}else{
//Firefox
if(navigator.userAgent.indexOf("Firefox") > -1){
window.sidebar.addPanel(toStr,toURL,'');
}else{
//Opera
if(navigator.userAgent.indexOf("Opera") > -1){
window.open(toURL,'sidebar','title='+toStr);
}else{
//Chrome,Safari
if(navigator.userAgent.indexOf("Chrome") > -1){
alert("[Ctrl]と[D}ボタンを同時に押してください。");
}else{
//Chrome,Safari
// 調べ切れず
}}}}}} それでも、少し発見(納得、ですが)や
留意点はあったよ。
★マイナーブラウザ を先に
前述のような、navigator.userAgent による
振り分けだと、
・FLock や Lunascape のような
マイナーブラウザ(大変、失礼!)
先にチェックしないと。
・・・と改めて思ったのは、それぞれの
navigator.userAgent なんだけど、
●Internet Explorer
//Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; YTB720; GTB6; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; Embedded Web Browser from: http://bsalsa.com/; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
●Lunascape
//Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090804 Firefox/3.5.3 Lunascape/5.1.5.19059
●Flock
//Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.8.1.17) Gecko/20080919 Firefox/2.0.0.17 Flock/1.2.6
●Firefox
//Mozilla/5.0 (Windows; U; Windows NT 5.1; ja; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
●Opera
//Opera/9.64 (Windows NT 5.1; U; ja) Presto/2.1.1
●Chrome,Safari
//Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0
つまり、同じエンジンを採用している現在、
・Lunascape にも
・Flock にも
・Firefox にも(当然)
"Firefox" って文字列があるんですよね。
だから、前からよく紹介されてる、
function ToFavorite(toURL,toStr){
//Internet Explorer
if(navigator.userAgent.indexOf("MSIE") > -1){
}else{
//Firefox
if(navigator.userAgent.indexOf("Firefox") > -1){
}else{
//Opera
if(navigator.userAgent.indexOf("Opera") > -1){
}else{
// 何もしない
}}}・Lunascape や ・Flock が
"Firefox" に引っかかり
見た目わかんないけどエラーになってるんですね。
★documet.write はやめた
よく紹介されているのは
HTMLのボタンの設置場所で、振り分けして
・opera の時は、rel='sidebar' 加えた
通常リンクにするもの なんですけど、
私自身は、
最近、HTMLに documet.write で書くのはあまり
好まないので、fuction 形式で。
それでも、リンク元 のところに ちゃんと ってやっておけば、
前記の振り分けで、一応
・IE,Firefox,Opera は動くんですね。
※IE6は不明? IETesterだと駄目だった。
★Flock は?
それほど普及もされて無いようですが
なんとなく削除できないブラウザ。
これ面白いんですけど、
window.open(toURL,'sidebar','title='+toStr);
window.sidebar.addPanel(toStr,toURL,'');
一応パネル開くんですね。
でも、
・window.open(toURL,'sidebar','title='+toStr); では
・別ウインドウが開いた上に
さらに、お気に入り登録パネルが開き
※でも、見た目何も引き継がれていないよう・・・
ところが、[OK]押すと、一瞬タイトルが表示され
ちゃんとブックマークされてる。
※重複チェックは無いようで、どんどん追加される。
・window.sidebar.addPanel(toStr,toURL,''); では
・別ウインドウは開かないけれど
パネルの挙動は同じ。
面白いですねぇ。
(こりゃまた 失礼!)
★Lunascape は?
・Chrome なんかは、
[Ctrl] + [D] なんだけど
・Lunascape は
[Ctrl] + [G] ですねぇ。
※G ・・・なんだろ?
で、結局最初のスクリプトのようになるわけですな。
お気に入りに登録
※ボタンにしたけりゃ、CSSでどうにでも
出来ますもんねぇ。
しかし、いまどき。
みなさんも クリップサービス使ってますよねぇ。
・【サイト部品】new お気に入りに登録
しかし、ネット見まくったけど、最近の話題には
あまり無いですねぇ。
Chrome、このままかなぁ。
※過去の古い記事
・【サイト部品】お気に入りに登録(2009/10/30 修正) ・・・ 【サイト構築メモ】
こちらも直しておきました。
(エントリー No25 だ!)