alertとpromptのどちらを使うか
ブックマークレットで、取得した何らかの結果を表示させるにはアラートまたはプロンプトを使う。
javascript:(function(){alert(’sample’);})()
javascript:(function(){a=window.prompt(‘title’,’sample’);})()
promptを使った場合は、IEならば、文字列がテキストボックスに出力され、選択状態になるので、コピーが簡単である。
ブックマークレットで、取得した何らかの結果を表示させるにはアラートまたはプロンプトを使う。
javascript:(function(){alert(’sample’);})()
javascript:(function(){a=window.prompt(‘title’,’sample’);})()
promptを使った場合は、IEならば、文字列がテキストボックスに出力され、選択状態になるので、コピーが簡単である。
ブックマークレットを使って特定のページを開く場合は次のような方法があります。
同じウィンドウで開く
javascript:(function(){document.location.href=URL})()
別のウィンドウで開く
javascript:(function(){window.open(URL)})()
Amazonのシンプルなリンクを作るブックマークを作ってみました。
Amazonの商品ページ(単品)を開いた状態で実行すると、リンク用の文字列(HTML)が表示されたダイアログが出ます。
Firefoxで動作を確認しました。
「xxxxx-22」のところを自分のアソシエイトIDに置き換えます。
javascript:(function(){asin=(document.location.href).match(/[0-9a-z]{10}/i);obim=document.getElementById(‘prodImage’);str=’<a%20href=http://www.amazon.co.jp/exec/obidos/ASIN/’+asin+’/xxxxx-22/ref=nosim/%20target=_blank><img%20src=’+obim.src+’><br>’+obim.alt+’</a>’;alert(str);})();
Amazonはよく仕様を変えるので、いつまで使えるか、分かりません。
ウェブページのテーブル、すなわち「<table>~</table>」を使って書かれたテーブルについて、1行おきに背景をグレーにするブックマークレットを作ってみました。
長い表を縞状にすることで見やすくしようというわけです。
そのページにあるテーブルすべてが対象になります。
InternetExplorer6、Firefox3で動作確認済みです。
javascript:(function(){ta=document.getElementsByTagName(“table”);for(i=0;i<ta.length;i++){tr=ta[i].getElementsByTagName(“tr”);for(j=0;j<tr.length;j++){if(j%2){tr[j].style.backgroundColor=”#f0f0f0″;}}}})()
蛇足ですが改行を入れて見やすくした場合を次に示します。
function(){
ta=document.getElementsByTagName(“table”);
for(i=0;i<ta.length;i++){
tr=ta[i].getElementsByTagName(“tr”);
for(j=0;j<tr.length;j++){
if(j%2){
tr[j].style.backgroundColor=”#f0f0f0″;
}
}
}
}
Twitterで「iPhoneでPicasaWebの画像が保存できない」というつぶやきがあり、「そんなはずはないだろう」と思い、やってみると確かにできませんでした。
iPhoneでは通常は画像をしばらく押していると、その画像を保存するオプションが表示されるのですが、PicasaWebではそれが出ません。
JavaScriptか何かで画像を押したときに別の動きをするように仕組まれているようです。
そこで「HTMLを解析して最初に登場する画像のURLを拾い、それをSafariで直に表示する」というブックマークレットを作りました。
これはこれですぐにできたのですが、肝心のPicasaWebで実行するとうまくいきません。
表示したい画像の前にアイコンか何かの画像データがあるためにそちらを拾ってしまうようです。
それで諦めかけたところ、Twitterで同じ人が「ブックマークレットでできた。ただし最初に拡大表示」というつぶやきをしていました。
「まあ、できたのならば、それでいいか」とも思いましたが、「途中まで成功しているので、自分なりの方法を完成させたい」と再度チャレンジ。
同じように「最初に拡大表示」をしてから、ブックマークレットを実行すると成功しました。
下はPicasaWebの画面ですが、赤で囲んだボタンを押してから、ブックマークレットを実行します。
17 powerful bookmarklets for your iPhone
このブックマークレットは「そのページにある画像すべて」を表示します。
私の作ったブックマークレットは「そのページにある最初の画像のみ」を表示します。
すべて表示する方が確実なのは間違いないでしょう。
URLに数字が入っている場合、次の数のページを開きます。「test123.htm」ならば「test124.htm」が開きます。
内容は次の通り。
javascript:(function(){document.location.href=document.location.href.replace(/(.*\D+)(\d+)(\.?.*)/,function($0,$1,$2,$3){return($1+($2-0+1)+$3)})})()
URLの中の数を探し、それに1を加えるだけですので、例えば「test01.htm」は「test2.htm」が開いてしまいます。
Firefoxで動作を確認しました。
はてなハイクにはiPhone用のページがあります。
しかしiPhoneで見ているときに通常ページが開いてしまうことがあります。
これをiPhone用ページ(モバイル表示)のURLに変換するブックマークレットを作りました。
逆にモバイル表示の時に実行すると通常ページのURLに変換されます。
HTMLでフレームが使われている場合に、フレームごとのリンクをリストアップします。
内容は次の通り。実際はエンコードしてあります。
javascript:(function(){f=document.getElementsByTagName(‘frame’);n=f.length;if(n==0){alert(‘There is no frame.’);}s=”;for(i=0;i<n;i++){t=f[i].src;s+=’<a href=’+t+’>’+t+’</a><br>’;}document.write(s);}())
しかし最近はフレームを使っているページはほとんど見かけないように思います。
チェックボックスにすべてチェックを入れるブックマークレットです。
内容は次の通り。
javascript:(function(){a=document.getElementsByTagName(‘input’);for(i=0;i<a.length;i++){if(a[i].type==’checkbox’){a[i].checked=’checked’}}})()
フレームが使われたりしているとうまく動きません。
Gmailだと簡易HTMLでは動きますが、標準HTMLではダメでした。
ブックマークレットの簡単な作り方は次のとおり。
なお、Internet Explorerで動作を確認した。
基本的にはこれでブックマークレットの完成である。
最近のコメント