您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Copy current list of tasks
// ==UserScript== // @name RTM copy tasks // @namespace cahrehn.com // @description Copy current list of tasks // @include https://www.rememberthemilk.com/* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js // @require http://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js // @grant GM_addStyle // @version 0.0.1.20140916215446 // ==/UserScript== // selection solution from: http://stackoverflow.com/a/987376/1090474 jQuery.fn.selectText = function(){ var doc = document , element = this[0] , range , selection ; if (doc.body.createTextRange) { range = document.body.createTextRange(); range.moveToElementText(element); range.select(); } else if (window.getSelection) { selection = window.getSelection(); range = document.createRange(); range.selectNodeContents(element); selection.removeAllRanges(); selection.addRange(range); } }; jQuery("head").append ( '<link ' + 'href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.1/themes/flick/jquery-ui.css" ' + 'rel="stylesheet" type="text/css">' ); GM_addStyle("#copy { position: absolute; right: -11px; top: -41px; height: 26px; width: 28px; }"); GM_addStyle("#copy_dialog { text-align: left; }"); jQuery('<div/>', { id: 'copy_dialog' }).dialog({ appendTo: 'body', autoOpen: false, minWidth: 400, maxWidth: 650 }).bind('copy', function() { // ensure that copy to clipboard happens first setTimeout(function() { jQuery('#copy_dialog').dialog("close"); }, 100); }); // force close-on-escape behavior which seems to be broken by focus stealing jQuery(document).keyup(function(e) { if (e.keyCode == 27) { jQuery('#copy_dialog').dialog('close'); } // esc }); jQuery('<button/>', { id: 'copy' }).button({ icons: { primary: 'ui-icon-extlink' } }).click(function() { var content = ""; jQuery('#tasks span.xtd_task_name').each(function() { content = content + jQuery(this).html() + "<br>"; }); jQuery('#copy_dialog').html(content).dialog("open"); // steal focus back from "Add a new task" input setTimeout(function() { document.activeElement.blur(); jQuery('#copy_dialog').selectText(); }, 50); }).insertAfter('#add-helpicon');