Skip to content

Instantly share code, notes, and snippets.

@laughingman7743
Created December 3, 2016 13:22
Show Gist options
  • Select an option

  • Save laughingman7743/5e18c750e9af37245dddbf6e85c3487c to your computer and use it in GitHub Desktop.

Select an option

Save laughingman7743/5e18c750e9af37245dddbf6e85c3487c to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name Feedly with Hatena bookmark
// @version 0.7.3
// @namespace http://www.otchy.net
// @include http://www.feedly.com/*
// @include http://cloud.feedly.com/*
// @include http://feedly.com/*
// @include https://www.feedly.com/*
// @include https://cloud.feedly.com/*
// @include https://feedly.com/*
// ==/UserScript==
(function() { // namespace
var setup = function() {
(function (d, func) {
var head = d.getElementsByTagName('head')[0];
var script1 = d.createElement("script");
script1.setAttribute("src", "//ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js");
script1.addEventListener('load', function() {
var script2 = d.createElement("script");
script2.textContent = "(" + func.toString() + ")(jQuery.noConflict(true));";
head.appendChild(script2);
}, false);
head.appendChild(script1);
})(unsafeWindow.document, function($) {
var buildHatebuLink = function(url) {
var escapedUrl = url.replace(/#/g, '%23');
return $('<a>').attr('href', 'http://b.hatena.ne.jp/entry/' + escapedUrl)
.attr('target', '_blank').append($('<img>').attr('src', 'http://b.st-hatena.com/entry/image/' + escapedUrl)
);
}
var setupMain = function(main) {
var $main = $(main);
if ($main.data('feedly-w-hatebu') === 'done') return;
var url = $main.find('.u100Entry').data('alternate-link');
$hatebu = buildHatebuLink(url);
$main.find('.entryTitle').after($hatebu);
$main.data('feedly-w-hatebu', 'done');
}
var setupEntryList = function(list) {
var $list = $(list);
if ($list.data('feedly-w-hatebu') === 'done') return;
$list.on('DOMNodeInserted', function(e) {
var target = e.target;
if (target.className && target.className.indexOf('content') >= 0) {
setupEntry(target);
return;
}
});
$list.data('feedly-w-hatebu', 'done');
}
var setupEntry = function(entry) {
var $title = $(entry).find('.title');
var url = $title.attr('href');
var $hatebu = buildHatebuLink(url).css({'margin-right': '0.2em'});
$title.prepend($hatebu);
}
$(window.document).on('DOMNodeInserted', function(e) {
var target = e.target;
if (target.id && target.id.match(/_main$/)) {
setupMain(target);
} else if (target.className && target.className.indexOf('board') >= 0) {
setupEntryList(target);
}
});
});
}
if (window.webkitURL !== undefined) {
// for Chrome
setup();
} else {
// for Firefox
window.addEventListener('DOMContentLoaded', setup, false);
}
})(); // end of namespace
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment