iOSのSafariでBookmarkletを取り出すブックマークレット MarkletTaker

よくありませんか、こういうこと?


Todoist - DennisKehrig.de
Todoist is a simple web based to-do list that I quite like. Though it is not specifically designed f...
まあ、こういうページを見てたわけです。Safariを拡張するブックマークレットですが、なんとこれは、見てるページに重ねてTodoistのリストを表示するシロモノらしい。いつでもどこでも、自分のTodoを確認したり、終了したりできるわけです。すごいすごい。



ところがこのブックマークレット、タップしても反応しない。正確に言うと、反応しないんじゃなくて「ブックマークレットバーにドラッグ&ドロップしろ」と指示が出る。でも、iPhoneにしてもiPadにしてもドラッグはできない。いつもなら泣く泣く諦めるのですが。



今回は諦めずに、下記のようなスクリプトを組んでみました。埋め込まれているブックマークレットを探し出し、テキストエリアに変換します。テキストエリアになれば、コピペは自由自在。これでブックマークレットスクリプトを頂戴しようという作戦です。

javascript:e=document.getElementsByTagName("a");for(i=0;i<e.length;i++){a=e[i];if(/javascript:/.test(a.href)){x=document.createElement("textarea");x.innerText=a.href.replace(/</g,"&lt;");x.style.width="100%";x.style.background="yellow";a.parentNode.replaceChild(x,a);}}

登録リンクはこちら→ http://tinyurl.com/qj2v9n8



手に入れた Todoist Anywhere を実行したのがこの画面。ほら、ちゃんと走ってる。チェックしてタスク完了にもできる。これ、便利かも。でもちょっと、長いリストになるとiPadの画面からはみ出ます。見ることは見れるんだけど。まあ、こんなものかな。


そんなわけで、今回のポイントは「iOSだからって諦めることぁない」ってこと。タップして「Javascript」と出るだけだったボタンでも、これなら中身を取り出すことができる。本当は replaceChild というコマンドを覚えて練習に作ってみたスクリプトなんですが、意外と実用的だったのでブログに載せておきます。何か応用できないかな。