unarist (26)

マストドンの自分のログを JSON で保存します。/web/* で実行してください。

(async(d=document,s=_=>new Promise(r=>setTimeout(r,2000)),m=JSON.parse(d.querySelector('#initial-...

ツイート中の3文字以上の英字列をnumeronymに変換します。

((target,p)=>(new MutationObserver(m=>m.forEach(r=>p(r.addedNodes))).observe(target,{childList:1,...

トゥート中の3文字以上の英字列をnumeronymに変換します。

((target,p)=>(new MutationObserver(m=>m.forEach(r=>p(r.addedNodes))).observe(target,{childList:1,...

個人的な好みで前後に : が入ってます

[].concat(...JSON.parse(document.querySelector('pre').textContent).filter(({emoji})=>emoji).map((...
unarist T/U box07/08

w/ "{title} {url}" format. easy copyable title/url box; click to copy, double-click outer to close

(()=>{'use strict';const canonical_base=(document.querySelector('head meta[property="og:url"][con...

charsetの指定がアレなサイトをMobileSafariで見たい時に

(window.length?Array.from(window):[window]).forEach(function(w){const xhr=new XMLHttpRequest();xh...

ログインした状態で実行してね

(function(){var settings=JSON.parse(document.querySelector('#initial-state').textContent).setting...

CWを自動で開きます。まる。

((target,proc)=>(new MutationObserver(m=>m.forEach(r=>proc(r.addedNodes))).observe(target,{childL...

適当

(function sayNext({target:c},target=new SpeechSynthesisUtterance(((document.querySelector('.masto...

my bookmarklet

web
void();

(function(){var url=prompt("Enter .js or .css URL:");document.head.appendChild(url.match(/\.js$/)...

割といける。

((r=window.getSelection(),s=String(r),p=r.anchorNode,e='',a,t)=>{if(p.nodeType==3)p=p.parentNode;...

全Textノードを舐めてそれらしい文字列をデコードしてみるという大胆さ

(()=>{const iter=document.createNodeIterator(document.body,NodeFilter.SHOW_TEXT);while((node=iter...

TL;DR: ` のすぐ内側に " or ' を入れる。内部でそれらを使う時はエスケープ。

{let LET_ID="foo";alert(`'<div class="${LET_ID}" onclick="alert(\'test\')">
  </div>'`.slice(1,-...

これ自体は何もしないよ。

var LET_ID="hoo";`.${LET_ID}div pre .hoge p:before{border:1px solid gray;content:"pre ${LET_ID} p...

Range.prototype.getClientRectsで表示範囲が取れることを利用したデモ

(function(){const MASK="range-visualizer-mask";const MASK_ELEM=`${MASK}-elem`;const MASK_NODE=`${...

お好みの Content-Security-Policy を追加して、制限を厳しくしてみよう

(function(){let csp=doc.createElement("meta");csp.httpEquiv="Content-Security-Policy";csp.content...

ブックマークレット開発のお供に

onerror=alert

delete selected node just once

(function(){'use strict';const options={passive:false,capture:true};function deleteOnce(e){e.stop...

(function(){'use strict';const tweet_box=document.querySelector('.tweet_box');const clearDecorati...
1 2