osu! select code block

Highlights Code Blocks

K instalaci tototo skriptu si budete muset nainstalovat rozšíření jako Tampermonkey, Greasemonkey nebo Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Violentmonkey.

K instalaci tohoto skriptu si budete muset nainstalovat rozšíření jako Tampermonkey nebo Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

K instalaci tohoto skriptu si budete muset nainstalovat manažer uživatelských skriptů.

(Už mám manažer uživatelských skriptů, nechte mě ho nainstalovat!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(Už mám manažer uživatelských stylů, nechte mě ho nainstalovat!)

// ==UserScript==
// @name        osu! select code block
// @namespace   s4nji
// @description Highlights Code Blocks
// @include     https://osu.ppy.sh/forum/*
// @version     1
// @grant       none
// ==/UserScript==

/*\
 * Creates a selection around the node
\*/

window.onload = function() {

  // Select Node | Credits to Álvaro G. Vicario- http://stackoverflow.com/a/4012861
  function selectNode(myNode){
      // Create a range
      try{ // FF
          var myRange = document.createRange();
      }catch(e){
          try{ // IE
              var myRange = document.body.createTextRange();
          }catch(e){
              return;
          }
      }

      // Asign text to range
      try{ // FF
          myRange.selectNode(myNode);
      }catch(e){
          try{ // IE
              myRange.moveToElementText(myNode);
          }catch(e){
              return;
          }
      }

      // Select the range
      try{ // FF
          var mySelection = window.getSelection();
          mySelection.removeAllRanges(); // Undo current selection
          mySelection.addRange(myRange);
      }catch(e){
          try{ // IE
              myRange.select();
          }catch(e){
              return;
          }
      }
  }

  // Add select code links/buttons next to code titles
  var el = " <a href='#' class='select-code'>[Select Code]</a>";
  jQuery('.codetitle').append(el);

  // Select Code Block near clicked select code links/buttons
  jQuery('.select-code').click( function(e) {
      e.preventDefault();
      selectNode( jQuery(this).parent().next()[0] );
  });

};