どーも。taka(@takaiphone2010)です。
iPhone系ブロガーなら知らない人はいないと言っても過言ではない、AppHTML。
言わずと知れた@hiro45jpさんが作成されたiPhoneアプリを紹介するHTMLを生成してくれる超便利なブックマークレットです。
こちらがAppHTMLメーカーのページです。
AppHtmlメーカー |
先日、このAppHTMLに修正を入れたく、久しぶりにブックマークレットを登録しようとしたのですが、思わぬところではまってしまったので書いておきます。
目次
経緯
▼AppHTMLメーカーのページでは、親切にiPhoneからブックマークレットの登録が行えるようにリンクがあります。
▼本来であれば、このリンクの遷移先ページをいったんブックマークに登録して、そのあと、ブックマークの編集で、URLの?より前の文字列を削除するというのが、ブラウザから起動できるようにする一般的な登録方法です。
▼なのですが、自分はブラウザでリンク先ページが表示されたら、URL窓のURLをコピーしてDraftpad(メモ帳)に貼り付け、そこからブックマークレットの起動URLを取得しました。(私は別途、通知センターからAppHTMLを起動するように設定しているため、通常のブラウザのブックマーク登録ではなく、起動URLが取得したかったのです。)
▼こんなふうに、コピーしたURLをDraftpadに貼り付けて、?より前を削除して、起動URLを取得しました。
しかし、このURLを使って登録したら、今まで通知センターから普通に起動させれていたAppHTMLが動作しません、、、
ここで、理由が分からずハマってしまいました(^_^;)
動かない原因はURLエンコードにあった
原因はURLエンコードと書いたのですが、正直よく分かっているわけではないので、多分と付けておきます。
具体的には、私がブラウザのアドレス欄からコピーして取得したURLは{ }や¥がURLエンコードされていませんでした。
解説通りに、いったんブラウザ(Safari)のブックマークに登録したURLだと、{ }や¥がURLエンコードされていました。
ブックマークに登録すると、なぜ{ }や¥がURLエンコードされるのか?いまいちよくわかってないのですが、URLを見比べるとこの部分に差異があり、URLエンコードされているほうはうまく動作しました。
うまく動かない時のチェックポイントは
ということで、技術的な根拠はよく分からないままなのですが、今回の件で心得たことはブックマークレットが動かない時は、きちんとURLエンコードがされているか?をチェックするということです。
登録したブックマークレットのURLの中に{}や¥など(ただし、’ ‘でくくられている中の文字列は除外)が残っていたらきちんとURLエンコードされていないということです。
まー、今回の件も、親切に書いていただいているブックマークレットの登録の解説通りに作業していれば問題なく動作していたはずなので、きちんと解説通りに作業しましょう!という教訓もあるのですが、こういう失敗もしないと理解が深まらなかったので、よしとしましょう。