您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
You can place a marker on the last newsfeed you have read, so it can be found easily next time. Ctrl-Click on an item to mark it, again to remove the mark.
当前为
var Flower; (function (Flower) { (function (csser) { /** * class names are case sensitive: http://devedge-temp.mozilla.org/viewsource/2001/css-class-id/ */ function hasClass(e, name) { return (new RegExp('(^|\\s)' + name + '(\\s|$)', 'gm')).test(e.className); } csser.hasClass = hasClass; })(Flower.csser || (Flower.csser = {})); var csser = Flower.csser; })(Flower || (Flower = {})); /// <reference path="hasClass.ts" /> var Flower; (function (Flower) { (function (csser) { function addClass(e, name) { if (!csser.hasClass(e, name)) { e.className += (' ' + name); } } csser.addClass = addClass; })(Flower.csser || (Flower.csser = {})); var csser = Flower.csser; })(Flower || (Flower = {})); var Flower; (function (Flower) { (function (csser) { function removeClass(e, name) { e.className = e.className.replace(new RegExp('(^|\\s+)' + name + '(?=\\s|$)', 'gm'), ''); } csser.removeClass = removeClass; })(Flower.csser || (Flower.csser = {})); var csser = Flower.csser; })(Flower || (Flower = {})); var Flower; (function (Flower) { (function (csser) { function createStyle(rule) { var style = document.createElement('style'); style.type = 'text/css'; if (style.styleSheet) { style.styleSheet.cssText = rule; // IE } else { style.appendChild(document.createTextNode(rule)); } return style; } csser.createStyle = createStyle; })(Flower.csser || (Flower.csser = {})); var csser = Flower.csser; })(Flower || (Flower = {})); /// <reference path="createStyle.ts" /> var Flower; (function (Flower) { (function (csser) { function addSheet(rule) { var head = document.head || document.getElementsByTagName('head')[0]; head.appendChild(csser.createStyle(rule)); } csser.addSheet = addSheet; })(Flower.csser || (Flower.csser = {})); var csser = Flower.csser; })(Flower || (Flower = {})); // ==UserScript== // @name Douban Timeline Marker // @namespace https://github.com/henix/userjs/douban_feedmark // @description You can place a marker on the last newsfeed you have read, so it can be found easily next time. Ctrl-Click on an item to mark it, again to remove the mark. // @author henix // @version 20140620.3 // @include http://www.douban.com/* // @license MIT License // @grant none // ==/UserScript== /** * ChangeLog: * * 2012-2-29 henix * don't listen on load event * * 2012-2-27 henix * change trigger action from "click" to "Ctrl-click" * * 2012-2-14 henix * add another yellow marker on the previous position, and it can't be removed * * 2012-2-14 henix * Version 0.1 */ /// <reference path="flower/csser/addClass.ts" /> /// <reference path="flower/csser/removeClass.ts" /> /// <reference path="flower/csser/addSheet.ts" /> var csser = Flower.csser; var curMark; function markItem(e) { if (curMark) { demarkItem(curMark); } csser.addClass(e, 'feedmarker'); curMark = e; } function demarkItem(e) { csser.removeClass(e, 'feedmarker'); curMark = null; } function getTarget(ev, mse) { if (ev) { return ev.target; } else { return mse.srcElement; } } function clickHandler(ev) { var e = (ev || window.event); if (!e.ctrlKey) { return; } var tg = getTarget(ev, window.event); if (tg.nodeName === 'A') { return; } if (curMark !== this) { markItem(this); localStorage.setItem('feedmarkid', this.getAttribute('data-sid')); } else { demarkItem(this); localStorage.removeItem('feedmarkid'); } } var markId = localStorage.getItem('feedmarkid'); var stitems = document.querySelectorAll('div.status-item'); csser.addSheet('' + '.feedmarker, .feedmarker-old { border: 1px dashed black }\n' + '.feedmarker-old { border-top: 20px solid #ff6 }\n' + '.feedmarker { border-top: 20px solid #ccc }\n'); for (var i = stitems.length - 1; i >= 0; i--) { var stitem = stitems[i]; if (markId && stitem.getAttribute('data-sid') === markId) { csser.addClass(stitem, 'feedmarker-old'); } stitem.addEventListener('click', clickHandler, true); // register for capturing }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址