title attr shrinker
by
noromanba
2017-02-23 [2017/02/23 08:30:44]
shrink too long title attribute
-
/*
* @title title attr shrinker
* @description shrink too long title attribute
* @include http://example.com/DIY
* @license MIT License http://opensource.org/licenses/MIT
* @javascript_url
*/
// UserScript
// https://gist.github.com/noromanba/f71a9da49f2e44b5c9fc0645f15c05f3
// via
// http://let.hatelabo.jp/a-kuma3/let/hJmeyNv-p802
// http://q.hatena.ne.jp/1487159409
// http://q.hatena.ne.jp/images/question/1487159/1487159409.jpg
// hatenanews on http://www.hatena.ne.jp/ has been fixed
(() => {
'use strict';
Array.from(document.body.querySelectorAll([
// write <a> selector(s) as you like
]), (link, idx) => {
if (!link.href) return;
const shrink = () => {
const xhr = new XMLHttpRequest();
xhr.open('GET', link.href);
xhr.timeout = 3000;
xhr.responseType = 'document';
xhr.addEventListener('load', () => {
if (xhr.readyState !== xhr.DONE || xhr.status !== 200) return;
const ctx = xhr.response.document;
const title = (ctx.querySelector([
'head title'
]) || {}).textContent || '';
const descr = (ctx.querySelector([
'head meta[property="og:description"][content]',
'head meta[name="twitter:description"][content]',
]) || {}).content || '';
const shrinked = title + '\n' + descr;
link.title = shrinked;
});
xhr.send();
};
const INTERVAL = 500;
setTimeout(shrink, INTERVAL * idx);
});
})();
-
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。