Twitter にシェアするブックマークレットを書く

ふとしです。

前置き

読んだニュースでおもしろいと思ったものを Twitter にシェアしていたのですが、これは以前まで Chrome の拡張機能で行っていました。

この拡張機能は微妙に思い入れがなかったので、引用が長すぎて URL が途中で途切れたりして機能は中途半端、その上最近 OS をクリーンインストールした際にコードまで概ね失ってしまいました。

そこで、よくあるシェアリンクを使えばいいじゃんということで、ブックマークレットとして再生しました。

ブックマークレットとは

ごく平たく言うと、ブックマークの URL の部分に javascript: スキーマを入力しておき、任意サイトで任意の JavaScript を実行する手段です。

javascript: alert("これ");

これをブックマークバーなどに持っていくと上のブックマークレットがお試しできる。

Twitter シェア用のリンク

文章を前もって入力したツイートダイアログを表示するには、以下のようなリンクを使えば可能です。

https://twitter.com/intent/tweet?text=ツイートの内容

クリックするとツイートダイアログが出る

選択範囲を引用してタイトルとかを入れたダイアログを出す。

あとは選択範囲とタイトルと URL を適当に連結して、上のリンクにする処理を書くだけです。

クエリ文字列としては使えない文字を含むことはよくあるので encodeURIComponent でエンコードした文字列を値として使います。

javascript:var text = window.getSelection().toString(); var prefix = text ? `"${text}" `: ""; var tweet = `${prefix}${document.title} ${location.href}`; window.open(`https://twitter.com/intent/tweet?text=${encodeURIComponent(tweet)}`, "_blank");

ブックマークに持っていく: 引用してツイート

おわり

簡単にツイートできるようになりました。

おまけ

見ているページのリンクをマークダウンで書き出すのには配布されている拡張機能を使っていたのですが、こちらはちょっと前のアップデートから要求パーミッションにページの内容へのアクセス権が増えて、必要性がよくわからなかったのでアンインストールしました。

それで、それ以来微妙に不便していたので、これもついでにブックマークレットにしてしまいましょう。

クリップボードそのまま書き込みます。