[★+]
@@ -1,5 +1,5 @@
/*
- * @title [☆+]
+ * @title [★+]
* @description Hatena Star on the whole world
* @include http://*
* @include https://*
@@ -8,41 +8,67 @@
* @javascript_url
*/
-// - fix syntax errors lost ";", when use in Bookmarklet from link
-// - some beatify
-
// e.g.
-// http://jshint.com/
+// http://d.hatena.com/
+// https://example.com/
-// inspired by http://let.hatelabo.jp/noromanba/let/gYC-xcvQ3PTQew
(() => {
- const d_ = document;
- if (!d_.querySelector('script[src*="s.hatena.ne.jp/js/HatenaStar.js"]')) {
- d_.head.appendChild(Object.assign(d_.createElement("script"), {
- type: "text/javascript",
- src: "//s.hatena.ne.jp/js/HatenaStar.js",
- onload: () => {
- const e = d_.querySelector("h1, h2, h3, h4, h5, h6");
- const Hatena = window.Hatena;
- Hatena.Star.SiteConfig = {
- entryNodes: {}
- };
- Hatena.Star.SiteConfig.entryNodes[e.tagName] = {
- uri: "document.location",
- title: "document.title",
- container: "parent",
- };
- Hatena.Star.EntryLoader();
- },
- }));
- } else {
- console.log("already Hatena.Star exists !");
+ if (document.querySelector([
+ 'script[src*="//s.hatena.ne.jp/js/HatenaStar.js"]',
+ 'script[src*="//s.hatena.com/js/HatenaStar.js"]',
+ ])) {
+ // TBD re-append add container
+ return;
}
+
+ const wall = document.head || document.body;// || document.documentElement;
+ wall.appendChild(Object.assign(document.createElement('script'), {
+ type: 'text/javascript',
+ src: 'https://s.hatena.ne.jp/js/HatenaStar.js',
+ onload: () => {
+ // TBD other element
+ const sol = document.body.querySelector([
+ Array.from(Array(6).keys(), n => 'h' + (n + 1))
+ ]);
+
+ // fallback to mobile c.f.
+ // http://let.hatelabo.jp/noromanba/let/gYC-xcvQ3PTQew
+ // http://ptech.g.hatena.ne.jp/noromanba/20170210/1486677295
+ if (!sol) {
+ // https://gist.github.com/noromanba/d730ccf3ae5e6916cd60
+ // https://gist.github.com/noromanba/3705f2e9ebb8538328b2f3f9a6f1a9b3
+ const canonical = () => {
+ return (document.querySelector('head meta[property="og:url"][content]') || {}).content ||
+ (document.querySelector('head link[rel="canonical"][href]') || {}).href ||
+ location.href;
+ };
+ const canon = canonical();
+
+ window.open('https://s.hatena.ne.jp/mobile/entry?uri=' + encodeURIComponent(canon));
+ return;
+ }
+
+ const Hatena = window.Hatena;
+
+ Hatena.Star.SiteConfig = {
+ entryNodes: {}
+ };
+
+ Hatena.Star.SiteConfig.entryNodes[sol.tagName] = {
+ uri: 'document.location',
+ title: 'document.title',
+ container: 'parent',
+ };
+
+ Hatena.Star.EntryLoader();
+ },
+ }));
})();
-// similar scripts c.f.
+// alt c.f.
// http://let.hatelabo.jp/yuta25/let/hJmdxKny-Mt7
// http://let.hatelabo.jp/yuta25/let/hLHVyMC71a1v
// https://github.com/wakaba/chrome-hatena-star-everywhere
// https://chrome.google.com/webstore/detail/hatena-star-everywhere/nbjckkhoenllbokoppppjagcckgaaaab
+// http://let.hatelabo.jp/noromanba/let/gYC-xcvQ3PTQew
/*
* @title [★+]
* @description Hatena Star on the whole world
* @include http://*
* @include https://*
* @contributor a-kuma3 http://let.hatelabo.jp/a-kuma3/let/hLHWypmkorgp
* @license MIT License http://opensource.org/licenses/MIT
* @javascript_url
*/
// e.g.
// http://d.hatena.com/
// https://example.com/
(() => {
if (document.querySelector([
'script[src*="//s.hatena.ne.jp/js/HatenaStar.js"]',
'script[src*="//s.hatena.com/js/HatenaStar.js"]',
])) {
// TBD re-append add container
return;
}
const wall = document.head || document.body;// || document.documentElement;
wall.appendChild(Object.assign(document.createElement('script'), {
type: 'text/javascript',
src: 'https://s.hatena.ne.jp/js/HatenaStar.js',
onload: () => {
// TBD other element
const sol = document.body.querySelector([
Array.from(Array(6).keys(), n => 'h' + (n + 1))
]);
// fallback to mobile c.f.
// http://let.hatelabo.jp/noromanba/let/gYC-xcvQ3PTQew
// http://ptech.g.hatena.ne.jp/noromanba/20170210/1486677295
if (!sol) {
// https://gist.github.com/noromanba/d730ccf3ae5e6916cd60
// https://gist.github.com/noromanba/3705f2e9ebb8538328b2f3f9a6f1a9b3
const canonical = () => {
return (document.querySelector('head meta[property="og:url"][content]') || {}).content ||
(document.querySelector('head link[rel="canonical"][href]') || {}).href ||
location.href;
};
const canon = canonical();
window.open('https://s.hatena.ne.jp/mobile/entry?uri=' + encodeURIComponent(canon));
return;
}
const Hatena = window.Hatena;
Hatena.Star.SiteConfig = {
entryNodes: {}
};
Hatena.Star.SiteConfig.entryNodes[sol.tagName] = {
uri: 'document.location',
title: 'document.title',
container: 'parent',
};
Hatena.Star.EntryLoader();
},
}));
})();
// alt c.f.
// http://let.hatelabo.jp/yuta25/let/hJmdxKny-Mt7
// http://let.hatelabo.jp/yuta25/let/hLHVyMC71a1v
// https://github.com/wakaba/chrome-hatena-star-everywhere
// https://chrome.google.com/webstore/detail/hatena-star-everywhere/nbjckkhoenllbokoppppjagcckgaaaab
// http://let.hatelabo.jp/noromanba/let/gYC-xcvQ3PTQew
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。