stackoverflow make markdown link for question and answers automatically

stackoverflow make markdown link for question and answers automatically :)

  1. // ==UserScript==
  2. // @name stackoverflow make markdown link for question and answers automatically
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.2
  5. // @description stackoverflow make markdown link for question and answers automatically :)
  6. // @author 批小将
  7. // @match https://*.stackexchange.com/*
  8. // @match https://stackoverflow.com/*
  9. // @match https://serverfault.com/*
  10. // @grant none
  11. // @license MIT
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16. function makeShareMDLink(){
  17. let shareBtnTemplate = `<button class="js-copy-link-btn s-btn s-btn__link">Copy MD link</button>`;
  18. let shareTags = document.querySelectorAll('div.my8');
  19. for(let i = 0; i < shareTags.length; i++){
  20. let shareTag = shareTags[i];
  21. let shareLink = shareTag.firstChild.value;
  22. let shareBtn = shareTag.nextSibling.firstChild;
  23. shareBtn.insertAdjacentHTML('afterend', shareBtnTemplate);
  24. shareBtn.nextSibling.addEventListener('click', function(){
  25. //Define the MD link as you like, here it's `[answer](https://stackoverflow.com/answerlink)`
  26. let shareText = "answer";
  27. let shareMDText = '[' + shareText + '](' + shareLink + ')';
  28. navigator.clipboard.writeText(shareMDText);
  29. })
  30.  
  31. }
  32. }
  33.  
  34. function makeQuestionMDlink(){
  35. let btnTemplate = `<button class="ws-nowrap s-btn s-btn__primary" id="makeMDbtn" style="margin-top: 5px;">make MD link</button>`;
  36. let askQuestionTag = document.querySelector('div.aside-cta');
  37. askQuestionTag.insertAdjacentHTML('beforeend', btnTemplate);
  38. let btn = document.getElementById('makeMDbtn');
  39.  
  40. let shareBtnTemplate = '<button class="js-copy-link-btn s-btn s-btn__link">Copy MD link</button>';
  41.  
  42. btn.addEventListener('click', function(){
  43. let qTag = document.querySelector('#question-header .question-hyperlink');
  44. let link = qTag.href;
  45. let text = qTag.innerText;
  46.  
  47. let markdownText = '[' + text + '](' + link + ')';
  48. navigator.clipboard.writeText(markdownText);
  49. });
  50. }
  51.  
  52. let timeout = 1000;
  53.  
  54. makeQuestionMDlink();
  55. setTimeout(function(){
  56. makeShareMDLink();
  57. }, timeout);
  58.  
  59. })();