##Screenshot / Code Snippet ![enter image description here][1] ##About This small UserScript makes it easier to copy the URL of the current question into pre-formatted Markdown. Once installed, it adds a 'copy' link to the question. ###License [MIT License](http://www.opensource.org/licenses/mit-license.php) ###Download http://files.quickmediasolutions.com/userscripts/copy.user.js ###Platform Any browser that can install UserScripts. ##Contact I can be reached at `[email protected]` ##Code JavaScript + jQuery ##Source // ==UserScript== // @name Copy Question Link Markdown // @author Nathan Osman // @namespace http://quickmediasolutions.com // @description Adds a button for copying the markdown of a question's URL to the clipboard // @include http://stackoverflow.com/* // @include http://meta.stackoverflow.com/* // @include http://superuser.com/* // @include http://serverfault.com/* // @include http://meta.superuser.com/* // @include http://meta.serverfault.com/* // @include http://stackapps.com/* // @include http://askubuntu.com/* // @include http://*.stackexchange.com/* // ==/UserScript== // Here I borrow a couple functions I wrote for another // UserScript that makes it easy to provide functions // with complete access to the page. function EmbedFunctionOnPageAndExecute(function_contents) { var exec_script = document.createElement('script'); exec_script.type = 'text/javascript'; exec_script.textContent = "(" + function_contents.toString() + ")()"; document.getElementsByTagName('head')[0].appendChild(exec_script); } // ...the other one function EmbedFunctionOnPage(function_name, function_contents) { var exec_script = document.createElement('script'); exec_script.type = 'text/javascript'; exec_script.textContent = function_contents.toString().replace(/function ?/, 'function ' + function_name); document.getElementsByTagName('head')[0].appendChild(exec_script); } // The code to execute when the ZeroClipboard lib loads EmbedFunctionOnPage('DoCopy', function() { // Determine the content of the DIV var content = '<b>Copy the following:</b><br /><br /><textarea id="copy-content" style="width: 440px; height: 80px;">[' + $('#question-header .question-hyperlink').text() + '](' + location.href + ')</textarea>'; $('body').append('<div id="copy-popup" class="popup" style="width: 450px; position: absolute; display: none;">' + '<div class="popup-close"><a title="close this popup">×</a></div>' + content + '</div>'); // Assign the close action to the 'x' $('#copy-popup .popup-close').click(function() { $('#copy-popup').fadeOut(300, function() { $('#copy-popup').remove(); }); }); // Position the dialog var pos = $('#copy-button').position(); var height = $('#copy-button').height(); $('#copy-popup').css('left', pos.left); $('#copy-popup').css('top', pos.top + height + 3); $('#copy-popup').fadeIn(500, function() { // Select the contents var textarea = document.getElementById('copy-content'); textarea.focus(); textarea.select(); }); }); // The code that gets executed right away. EmbedFunctionOnPageAndExecute(function() { // Embed the copy item $('.post-menu').append("<span class='lsep'>|</span><a href='javascript:void(0)' onclick='DoCopy()' id='copy-button'>copy</a>"); }); [1]: https://i.sstatic.net/rcNKR.png