Jak przerobić ten skrypt w skryptozakładkę / uruchomić w Tampermonkey?


(krystian3w) #1
$(function() {
  var loc = window.location.href;
  if(/dobre/.test(loc)) {
    $('.topic-body a').addClass('no-track-link');
}
});

Próbowałem ale w Brudnopisie Firefox ciągle zwraca błąd że brakuje mnie jakiegoś nawiasu.

Próbowałem też skryptem w Tampermonkey ale niestety przy zmianie tematu przestaje działać jak nie zrobię pełnego przeładowania:

// ==UserScript==
// @name         No track link click
// @version      0.1
// @description  try track me click
// @author       krystian3w
// @match        https://forum.dobreprogramy.pl/
// @include https://forum.dobreprogramy.pl/*
// @grant none
// ==/UserScript==

  
$(function() {
        'use strict';
  var loc = window.location.href;
  if(/dobre/.test(loc)) {
    $('.topic-body a').addClass('no-track-link');
}

})();

(Fizyda) #3

Czemu do funkcji jQuery ($) przekazujesz jako parametr funkcję? Czemu ma to służyć? Jeśli nie masz globalnie ustawionego $ jako jQuery i chcesz to zrobić dla konkretnego bloku kodu to robisz to błędnie, powinno być coś takiego:

(function($) {
	// twoj kod
})(jQuery);

(krystian3w) #5
    var body = document.getElementsByTagName("body")[0];

    window.addEventListener("DOMContentLoaded", function() {
        $('.regular.contents .cooked a[href*="//"]').addClass('no-track-link');
    });

    //fallback

    body.addEventListener("mouseover", function() {
        $('.regular.contents .cooked a[href*="//"]').addClass('no-track-link');
    });

Nie używam do forum tabletu lub smartfona, to ruch myszki jak dla mnie ok, pozostaje dalej zawęzić działanie tylko do mniejszej grupy linków (by nie próbowało modyfikować np. linka z osadzonego wideo YouTube, linków z cytatów do profilu użytkownika / przywołań) i może obciążenie wywoływane przez zdarzenia ruszania kursorem (wciąż nie znalazłem zdarzenia załadowania nowego postu czy przebudowania się ruchomej części kodu).