メタスター
-
/*
* @title メタスター
* @description スターに引用スターを付けたり付けられなかったりします。
* @include *
* @license MIT License
* @javascript_url
*/
/*
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style$compare?locale=en-US&to=1140743&from=1133865
https://drafts.csswg.org/cssom/#cssstylerule
去年の 11月頃に仕様書通りになったのかな
s.hatena.ne.jp/userID/stars#somethingfragment につけようとしたらスターが奈落に呑まれた
blog.hatena.ne.jp/userID/ も奈落に呑まれる
b.hatena.ne.jp/userID/ はうまくいった
let.hatelabo.jp/userID/ はうまくいった
あとは未確認
*/
// http://h.hatena.ne.jp/noromanba/4623536828018945911
(() => {
const d_ = document;
const c = Hatena.Star.EntryLoader;
const entries = c.entries;
const jsonurl = '//s.hatena.ne.jp/entries.json?';
let j = jsonurl;
//Hatena.Star.SiteConfig.entryNodes['span.hatenalet-expanded-quote'] = { uri: 'a', title: 'q', container: 'q' };
entries.forEach(e => e.stars.forEach(s => {
if (!s.quote || s.anchor.parentNode.className == 'hatenalet-expanded-quote') return;
const wrap = Object.assign(d_.createElement('span'), {
className: 'hatenalet-expanded-quote',
style: 'border: silver 1px solid; margin-left: 0.5ex; margin-right: 0.7ex;'
});
s.anchor.parentNode.insertBefore(wrap, s.anchor).appendChild(s.anchor);
s.anchor.href += '#' + e.uri.replace(/[^\w\-\.:]/g, '_');
const q = wrap.appendChild(Object.assign(d_.createElement('q'), {
innerHTML: s.quote,
style: 'font-weight: normal; font-size: medium; color: black; padding-left: 2px;'
}));
const entry = new Hatena.Star.Entry({ entryNode: wrap, uri: s.anchor.href, title: s.quote });
entry.comment_container = q.appendChild(c.createCommentContainer());
entry.star_container = q.appendChild(c.createStarContainer());
entry.showButtons();
entries.push(entry);
if (j.length > Ten.JSONP.MaxBytes) {
new Ten.JSONP(j, c, 'receiveStarEntries');
j = jsonurl;
}
j += `uri=${encodeURIComponent(entry.uri)}&`;
}));
if (!Hatena.Visitor) j += 'timestamp=1';
new Ten.JSONP(j, c, 'receiveStarEntries');
})();
-
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。