Hatena::Diary::Profile
by
noromanba
2012-02-07 [2012/02/07 07:43:30]
閲覧中のはてなダイアリー/はてなブログのダイアリープロフィールにジャンプする(はてなグループ対応)
@@ -26,7 +26,6 @@
var domain = searchHatenaDomain();
if (domain) {
var topPage = location.origin || location.protocol + '//' + location.hostname;
- // Ten http://www.hatena.ne.jp/js/Ten.js or http://s.hatena.ne.jp/js/HatenaStar.js
var userName = getUserName();
if (userName && isReservedWord(userName)) {
userName = '';
/*
* @title Hatena::Diary::Profile
* @description Go to HatenaDiary/HatenaBlog Profile (閲覧中のはてなダイアリー/ブログのダイアリープロフィールにジャンプする)
* @include http://d.hatena.ne.jp/*
* @include http://*g.hatena.ne.jp/*
* @include http://*.hatenablog.com/*
* @include http://*.hateblo.jp/*
* @include http://*.hatenadiary.com/*
* @include http://*.hatenadiary.jp/*
* @license MIT License http://noromanba.mit-license.org/2012+
* @require
* @see http://let.hatelabo.jp/noromanba/let/gYC-yaLdm_rUcA (Permalink)
* @see http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CAID
*/
// Profile Pages -> origin + /about
// http://d.hatena.ne.jp/@USERNAME/about
// http://@USENAME.hatenablog.com/about
// ↓忘れてた。
// http://g.hatena.ne.jp/@USERNAME/about
// http://@GROUPNAME.g.hatena.ne.jp/@USENAME/about
// @TODO はてダ/ブロを表現するクラスベースにした方が
// http://let.hatelabo.jp/noromanba/let/gYC-yaKPiIfzXA とのからみで後々いいかも
(function() {
var domain = searchHatenaDomain();
if (domain) {
var topPage = location.origin || location.protocol + '//' + location.hostname;
var userName = getUserName();
if (userName && isReservedWord(userName)) {
userName = '';
}
topPage += userName ? '/' + userName : '';
var aboutPage = topPage + '/about';
console.debug('::Let:: ' + 'topPage: ' + topPage);
console.debug('::Let:: ' + 'aboutPage: ' + aboutPage);
location.href = aboutPage;
}
})();
function searchHatenaDomain() {
var domains = [
'd.hatena.ne.jp',
'g.hatena.ne.jp',
'hatenablog.com',
'hateblo.jp',
'hatenadiary.com',
'hatenadiary.jp'
];
var host = location.hostname;
for (var i = 0; i < domains.length; i++) {
if (host.indexOf(domains[i]) != -1) {
return domains[i];
}
}
return '';
}
function getUserName() {
// Ten http://www.hatena.ne.jp/js/Ten.js or http://s.hatena.ne.jp/js/HatenaStar.js
var Hatena = Hatena || {};
if (Hatena.Author && Hatena.Author.name) {
return Hatena.Author.name;
}
// Tenがいないはてブロは想定してない
var userName = location.pathname.split('/')[1];
console.debug('::Let:: '+ 'userName: ' + userName);
return userName;
}
// TenのHatena.Author.name が使えないと、はてなIDの判別がめんどくてこうなっちゃう。
// これははてなサービス全般でいえる。かといってスクレイピングはちょっと。
// Array.forEach使いたいですIE8先生・・
function isReservedWord(userName) {
// とりあえずグループ分だけ
var reserved = [
'about',
'calendar',
'diarylist',
'keyword',
'keywordlist',
'task',
'topictree'
];
for (var i = 0; i < reserved.length ; i++) {
if (reserved[i] == userName) {
return true;
}
}
return false;
}
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。