initial F
-
/*
* @title initial F
* @description reset pointed element font size
* @include http://*
* @include https://*
* @contributor noromanba http://let.hatelabo.jp/noromanba/let/hLHUj4za1NIc
* @license MIT License https://opensource.org/licenses/MIT
* @javascript_url
*/
// via
// http://h.hatena.ne.jp/a-kuma3/227137860056298438
// c.f.
// http://neos21.hatenablog.com/entry/2018/01/01/080000
// https://codepen.io/Neos21/pen/JOVRJe/
// TODO
// - clean inline properties
// - lookup original font-size
// - clean listener
// - strict history management
//
// TBD
// - Esc or other key to cancel
// - :hover
// - functions extraction
// - extract content javascript
// https://github.com/hatena/extract-content-javascript
// http://let.hatelabo.jp/noromanba/let/gYC-yoLNt8-ANg
(() => {
'use strict';
const body = document.body;
body.style.cursor = 'zoom-in';
const hist = new Map();
const enlarge = (evt) => {
// https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot/elementFromPoint
const node = document.elementFromPoint(evt.x, evt.y);
// single-click guard
if (hist.has(node)) return;
hist.set(node, getComputedStyle(node).fontSize);
//node.style.setProperty('font-size', 'initial' 'important');
node.style.fontSize = 'initial';
node.style.cursor = 'not-allowed';
// TBD other event; e.g. key combination
node.addEventListener('dblclick', evt => {
const node = evt.target;
node.style.fontSize = hist.get(node);
hist.delete(node);
node.style.cursor = 'zoom-in';
//body.removeEventListener(evt.name, enlarge);
});
};
body.addEventListener('click', enlarge);
})();
-
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。