HTTPS にしてからはてなスターの通知がこない
あんまりスター付かないので気付いてなかったのですが、Chrome 拡張の「はてなのお知らせ」とかに通知がこなくなっていることに気付きました。
おそらく「HTTPS にしたこと」というより、http: から https: に URL が代わったことにより Hatena.Star.Token の更新が必要なんだと思います。が、s.hatena.ne.jp/cho45/blogs にログイン状態でアクセスすると現状タイムアウトしてしまうので、詰んでいます。
HatenaStar.js を読んでて気付いたのですが、
Hatena.Star.Token = null; がベタに書いてあるため、async と併用するとそもそも Token が初期化されてしまうようでした……
HTTPS とか関係なかったです。HTTP ではてなスターに登録していても、リダイレクトしているなら、リダイレクト先の Token を読んで判断するようです。
しかしHTTPSにしたことによって過去のスターが消えてそうなことに気付いたので、どうしようか考えています。
結局にっちもさっちも行かないことがわかったので、HatenaStar.js のコピーを編集して使うようにしました。
はてなスターに渡すURLは http: に戻しました。HTTPS になってからついたスターが表示されなくなってしまいますが (申し分けないのですが)、HTTP のときについたスターは復活するはずです……
まぁそもそも、そろそろはてなスター止めてもいいかもしれないんですが、もうちょっと頑張ってみようという感じです。
--- HatenaStar.orig.js 2016-04-15 23:11:20.355944766 +0900
+++ HatenaStar.js 2016-04-15 23:11:34.687944255 +0900
@@ -4655,7 +4655,39 @@
/* start */
-new Hatena.Star.WindowObserver();
+// new Hatena.Star.WindowObserver();
+
+Hatena.Star.Token = '7743b0e60f0e3b267f9723d3a5cf96981a59e4f3';
+Hatena.Star.EntryLoader.loadEntries = function (node) {
+ console.log('custom EntryLoader');
+ var entries = [];
+ var entryNodes = node.getElementsByTagName('article');
+ for (var i = 0, entryNode; (entryNode = entryNodes[i]); i++) {
+ var uri = entryNode.querySelector('a.bookmark').href || '';
+ var title = entryNode.querySelector('h1').innerText;
+ var container = entryNode.querySelector('.social .hatena-star');
+
+ var sc = Hatena.Star.EntryLoader.createStarContainer();
+ container.appendChild(sc);
+ var cc = Hatena.Star.EntryLoader.createCommentContainer();
+ container.appendChild(cc);
+
+ entries.push({
+ uri: uri.replace(/^https:/, 'http:'),
+ title: title,
+ star_container: sc,
+ comment_container: cc
+ });
+ }
+
+ console.log('custom EntryLoader loaded', entries);
+
+ return entries;
+};
+
+window.addEventListener('load', function () {
+ new Hatena.Star.EntryLoader();
+});
/* Hatena.Star.SiteConfig */
/* sample configuration for Hatena Diary */
関連エントリー
- AngularJS の ngResource を既存APIの仕様にあわせる AngularJS には ngResource という拡張があって、サーバに対する API 経由の CRUD 的操作を JavaScript...
- はてブ用ブックマークレット 現在の非表示ユーザの総数: javascript:(async()=>{alert((await(await fetch("http://b...
- node.js で git の blob sha1 を求める github の API とかに出てくる "sha" は git 的な sha1 で、ファイルの内容のみからとった sha1 ではない。なん...
- ブログシステムの HTML 生成を効率化 そろそろやることなくなったので minify などをやることにしました。 ただ、ブログシステムの出力の最後ほうでページごとに全体を mini...
- HTML要素が見える範囲にあるかの判定 HTML上のある要素が見える範囲にあるかを JavaScript で判定したい。なんか1発で判定できるメソッドがあった気がしたが見つからなか...