Foxy Gestures:Twitterの画像を原寸大で新しいタブで開く ― 2018/09/21 18:54
レガシーアドオンのためにESRに逃げていたのですけれど、とうとう逃げ切れなくなりましたので、試しにQuantumを入れて様子を見ることにしました。
先ずは操作性から元の環境に近づけるべくFoxy Gesturesを導入。
スクリプトをどうしたものかと考えていたら
Firefox 57(Quantum)で動かなくなった「FireGestures」の代替に選ばれたのは、「Foxy Gestures」と往年の名ソフトでした。
でサンプルスクリプトまで解説付きで公開してくれてるので、ありがてぇありがてぇとばがりにパク、もとい参考に手をいれてみましたw
var src = data.element.mediaInfo && data.element.mediaInfo.source; var lnk = data.element.linkHref || src; if (src) { if ((src.split('/')[2] == 'pbs.twimg.com') && ((src.split('/')[3] == 'media') || (src.split('/')[3] == 'card_img'))) { if (mouseDown.ctrlKey) { src = lnk; } src = src.replace( /small|([0-9]+x[0-9]+|large|medium|thumb|orig).*$/, 'orig'); } else { if (!(mouseDown.ctrlKey)) { src = lnk; } } } else { src = lnk; } if (src) { executeInBackground((src, alt) => { getActiveTab(tab => browser.tabs.create({ url: src, index: tab.index, active: !(alt) })); }, [ src, mouseDown.altKey ]); }
ということで、FireGestures:Twitterの画像を原寸大で新しいタブで開くはQuantumでも解決と。
それにしてもブックマークのタグ検索とスマートブックマークのqueryを編集するインターフェイスがない(なんでURIを隠すのか)のがなぁ……
ずいぶんご無沙汰してましたが、覚書はブログの方が便利(ググれるのでw)なもので腱鞘炎をおして更新っとw
年をとるとあっちこっちガタガタで困ったものです。
追記(10/21)
画像のリンク先(大きな画像がリンクされてたりとか)も同じジェスチャーで開きたいと思ったので、ちょこっと書き足し
画像でなくてもリンク先を新しいタブに開くのでなかなか重宝している。
追記(10/24)
Ctrlキーを押しながらジェスチャーすると改造前のようにジェスチャー上の画像を新しいタブに開きます。
これで元のソースを残す必要もないので上書きしました。
追記(10/29)
altキーでバックグラウンドで開くようになります。
一般設定で「Altキーを押している間はジェスチャーを無効にする」のチェックを外す必要があります。
本当はバックグラウンドで開くときはアクティブタブの右に開きたいのですが、続けてバックグラウンドで開くときに先に開いたタブの右に開く方法が分からない(中クリックでリンク先を次々に開くのと同じようにできない)ので今は左に開くようにしています。
追記(2020/1/29)
Twitterの仕様が変わったので対応
でもサムネイルからオリジナルサイスを開くにはCtrlキーを押しながらジェスチャーする必要があります。
Ctrlキーを押したくないという方は
一行目の
src = data.element.linkHref;
と三行目の
src = data.element.mediaInfo && data.element.mediaInfo.source;
を入れ替えるといいです。
追記(2020/2/3)
やはり、いちいちCtrlキーを押すのが面倒だったのでw
・Twitterの画像上でジェスチャーするとオリジナルサイズの画像を新しいタブに開く
(この時Ctrlキーが押されていれば画像に設定されたリンク先を新しいタブに開く)
・それ以外の文字や画像リンク上でジェスチャーするとリンク先を新しいタブに開く
(この時Ctrlキーが押されていればジェスチャーした時の画像を新しいタブに開く)
なんだか説明すると複雑ですが元のスクリプトより快適に使えてます。
追記(2020/2/11)
url変換部分にelseいらんよなぁって削除
var lnk = data.element.linkHref;
if (!(lnk)) {
lnk = src;
}
が
var lnk = data.element.linkHref || src;
一行で済むと知ってさっそく置き換えw
最近のコメント