kalpdev.1 / KeyLight 9

// ==UserScript==
// @name          KeyLight 9
// @namespace     kalpsdj
// @author        Shjaisw
// @license       MIT
// @updateURL     https://openuserjs.org/meta/kalpdev.1/KeyLight_9.meta.js
// @downloadURL   https://openuserjs.org/install/kalpdev.1/KeyLight_9.user.js
// @run-at        document-end
// @version       3.6
// @description   Highlights Connecting words
// @include       https://*
// @exclude       https://*google*
// @exclude       https://*policy*
// @exclude       https://*share*
// @exclude       https://argus.aka.amazon.com/*
// @exclude       https://issues.amazon.com/*
// @grant         GM_registerMenuCommand
// @grant         GM_setValue
// @grant         GM_getValue
// ==/UserScript==


 // Do not make any changes/delete any script,line no 13. We are not responsible for any changes in script. Do not allow script to run on argus.


(function() { // Highlight Connecting words Realated product details
  'use strict';

  if (window.self !== window.top) { return; }


  function setUserPref(varName, defaultVal, menuText, promtText, sep){
    GM_registerMenuCommand(menuText, function() {
      var val = prompt(promtText, GM_getValue(varName, defaultVal));
      if (val === null)  { return; }

      if (sep && val){
        var pat1 = new RegExp('\\s*' + sep + '+\\s*', 'g');
        var pat2 = new RegExp('(?:^' + sep + '+|' + sep + '+$)', 'g'); // trim starting & trailing separator
        val = val.replace(pat1, sep).replace(pat2, '');
      }
      val = val.replace(/\s{2,}/g, ' ').trim();
      GM_setValue(varName, val);

      if(!document.body.querySelector(".THmo")) THmo_doHighlight(document.body);
      else location.reload();
    });
  }


  var THmo_MutOb = (window.MutationObserver) ? window.MutationObserver : window.WebKitMutationObserver;
  if (THmo_MutOb){
    var THmo_chgMon = new THmo_MutOb(function(mutationSet){
      mutationSet.forEach(function(mutation){
        for (var i=0; i<mutation.addedNodes.length; i++){
          if (mutation.addedNodes[i].nodeType == 1){
            THmo_doHighlight(mutation.addedNodes[i]);
          }
        }
      });
    });
    // attach chgMon to document.body
    var optss = {childList: true, subtree: true};
    THmo_chgMon.observe(document.body, optss);
  }



  function THmo_doHighlight(el){
    var sdj = GM_getValue('sdj');
    if(!sdj)  sdj="Li-ion, Lithium-ion, lithium-polymer, 18650, Li-metal, Battery, Lead Acid, Non spillable, rechargable, wireless, AGM, Wired, Bluetooth, jump starter, ride on, 3.5mm, Built in, inbuilt, watt hour, charging, hand warmer, heated jacket,gauss, pull force, inch, marker, glitter, Butane, flint, igniter, pull,start, radioactive, empty, gas, fire, nicotine, piezo, MANUAL, waterbased"
    var sdjc = GM_getValue('sdjc');
    if (!sdjc) sdjc = "color: #000; font-weight: bold; background-color: #FF8C00;"

    var rQuantifiers = /[-\/\\^$*+?.()|[\]{}]/g;
    sdj = sdj.replace(rQuantifiers, '\\$&').split(',').join('|');
    var pat = new RegExp('(' + sdj + ')', 'gi');
    var span = document.createElement('span');

    var snapElements = document.evaluate(
        './/text()[normalize-space() != "" ' +
        'and not(ancestor::style) ' +
        'and not(ancestor::script) ' +
        'and not(ancestor::textarea) ' +
        'and not(ancestor::code) ' +
        'and not(ancestor::pre)]',
        el, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);

    if (!snapElements.snapshotItem(0)) { return; }

    for (var i = 0, len = snapElements.snapshotLength; i < len; i++) {
      var node = snapElements.snapshotItem(i);

      if (pat.test(node.nodeValue)) {

        if (node.className != "THmo" && node.parentNode.className != "THmo"){

          var sp = span.cloneNode(true);
          sp.innerHTML = node.nodeValue.replace(pat, '<span style="' + sdjc + '" class="THmo">$1</span>');
          node.parentNode.replaceChild(sp, node);
        }
      }
    }
  }

  // first run
  THmo_doHighlight(document.body);
})();